私はユーザーが自分の設定をテキストファイルに保存できるスクリプトを作成しています。保存した設定を使用するには、設定名を入力する必要があります。その後、スクリプトはユーザーの入力を比較してテキストファイル内の名前を見つけます。一致する名前が見つかった場合は、そのテキストファイルから行全体を抽出します。これまで私のコードは次のようになります。
echo enter setting name
read name
#count=0
while IFS= read line
do
if [ "$name" == "$settingName" ]
then
cp **/*"$ft1" $dir1
else
echo "file doesnt exist"
fi
done < preco.txt
変数を保存するために使用するコードは次のとおりです。
echo save settings?
read decision
if [ "$decision" = "y" ]
then
echo enter settings name
read settingName
echo $settingName $dir1 $ft1 >> preco.txt
else
echo "bye"
exit
$dir1と$ft1をcpに入力したいと思います。
答え1
設定を保存するコードから推測できますが、設定ファイルの例を含めるとよいでしょう。
コードの1つの問題は"$settingName"
。
パラメータにスペースがないと仮定すると、次のように動作します。
echo enter setting name
read name
found=false
while read settingName dir1 ft1
do
if [ "$name" == "$settingName" ]
then
cp "$ft1" $dir1
found=true
fi
done < preco.txt
if ! $found; then
echo "$name not found"
fi
このステートメントは、read settingName dir1 ft1
ファイルの3つのフィールドをpreco.txt
名前付き変数として読み込みます。
もう一つのポイントは、一致しないすべての行に対してエラーメッセージを表示したくないことです。ファイルを読み取り、一致する行がない場合にのみエラーメッセージを表示する必要があります。