通常、スクリプトでファイル名を使用するときは、スクリプトのファイル名を明示的に説明します。
#!/bin/bash ... echo "<dynamic text>" >> process_log.log ...
次のようにファイル名をスクリプトに渡すことができるかどうか疑問に思います。
./script_name.sh file_1 file_2 file_3
機能タブオートコンプリート。 (これはとても楽です!)
誰でもこれの経験がありますか?ありがとうございます。
read
いくつかの入力データを要求する1つの方法ですが、複数の入力と長いテキストの場合は面倒です。
答え1
いいですね。スクリプトは1つの必須パラメータと2つのオプションのパラメータを使用します。 1つ以上の引数を指定しないと終了します(エラーとともに)。それ以外はあまり効果がありません!
#!/bin/sh
if [ -z "$1" ]
then
echo "Missing filename: 1"
exit 1
else
file1=$1
fi
file2="$2"
file3="$3"
printf "File 1: %s\n" "$file1"
printf "File 2: %s\n" "$file2"
printf "File 3: %s\n" "$file3"
cat "$file1"
たとえば、別の名前で保存し、script_name.sh
実行可能ファイルとして設定します。
chmod u+x script_name.sh
次に、次のように実行します。
./script_name.sh script_name.sh script_name.sh script_name.sh
渡した3つの引数(すべて「script_name.sh」)とそれcat
自体を表示する必要があります。
これを試してみたら、タブの完成を試みました。自動的にうまく機能しました(クリックするとファイルとディレクトリが表示されますTab)。私はそうなるように何もしなかった。ただし、スクリプトが特定のファイルのみを処理したい場合は、を押すとcomplete -f -X '!*.png' script_name.sh
「.png」ファイルのみが表示されますTab。
以下を追加するように編集されました。
complete
スクリプト自体では実行されません(script_name.sh
上記の例では)。別のファイルを作成します(completion_for_script_name.sh
例:)。
complete -f -X '!*.png' script_name.sh
source
現在の環境に完成をロードするために使用されます。
source ./completion_for_script_name.sh
.bash_profile
通常、またはなどのシェルの構成ファイルでこれを行います.bashrc
。