$_1/ で test コマンドを使用します。

$_1/ で test コマンドを使用します。

以下のコマンド、特に太字の部分を理解しようとしています。

2行目が何であるかを理解します。ファイルが存在するかどうかをテストし、存在しない場合はファイルを生成しますが、何ですか?$_1/意味は?

test "$1" = "0" && exit
test -f $_1/samplefile || touch $_1/samplefile

ベストアンサー1

$_1「拡張変数」を意味します_1。この変数は設定されていないため、空の状態に展開されます。誰かが間違いを犯した可能性があります。

人間の考えは次$_1のようになります。${_}1$_前のコマンドの最後のパラメーター。)、番号に接続されます1。しかし、以下のように同じではありません。

$ cat tst.bash
#!/bin/bash
test "$1" = "0" && exit
echo $_
test "$1" = "0" && exit
echo $_1
test "$1" = "0" && exit
echo ${_}1
$ ./tst.bash
0

01

スクリプトに引数として数字0以外の項目を指定すると(上記の例では引数をまったく提供しません)、失敗してtest実行exitされません。したがって、各に対してecho最後に実行されたコマンドは次のようになります。

test "$1" = "0"

、最後のパラメータはです0。したがって$_、に展開され0${_}1拡張され01$_1空の文字列に展開されます。

おすすめ記事