0

インタラクティブとバッチの両方で使用するスクリプトを作成したいと考えています。引数が指定されていない場合、スクリプトはユーザーの入力を求めます。

こことは異なり、変数がすでに引数によって定義されていても、ユーザーは気にする必要はありません。

パラメータ展開を使用して、これを試しました:

${FILE="$( echo "Please provide the file:" >&2 ; read a; echo $a )"}

...しかし、常にcommand not foundエラーが発生します。

助言がありますか?

4

2 に答える 2

1

私は書くだろう

# earlier in program, $FILE may or may not be defined

if [[ -z $FILE ]]; then
    read -p "Please provide the file: " FILE
fi

本当に1行に詰め込みたい場合は、:コマンドと代入展開構文を使用してください

: ${FILE:=$(read -p "file?"; echo "$REPLY")}

ALL_CAPS_VARS を使用しないでください。いつか使用PATHして、スクリプトが壊れている理由を不思議に思うでしょう。

于 2015-07-30T14:00:25.630 に答える
0

そのはず

FILE="$( echo "Please provide the file:" >&2 ; read a; echo $a )"

初期化の代わりにコマンドを実行しようとしています

${FILE="$( echo "Please provide the file:" >&2 ; read a; echo $a )"}
Please provide the file:
Mahesh
-bash: Mahesh: command not found
$ FILE="$( echo "Please provide the file:" >&2 ; read a; echo $a )"
Please provide the file:
mahesh
$ echo $FILE
mahesh
于 2015-07-30T14:05:46.330 に答える