コマンドを直接使用することと$(foo)を使用することの間で混乱しています。私はMacを使用しておりbrew cask
(パッケージマネージャ)がインストールしたアプリケーションを一覧表示し、各アプリケーションをエコーしようとしています。 2つの短いシェルスクリプトがあり、最初のスクリプトは次のとおりです。
#!/bin/bash
apps=$(brew cask list)
for app in ${apps}
do
echo "${app}"
done
うまくいきますが、別のものは次のとおりです。
#!/bin/bash
apps=$(brew cask list)
myecho=$(echo)
for app in ${apps}
do
${myecho} "${app}"
done
これによりアプリケーション名./script2.sh: line 7: foo: command not found
が返されます。foo
echoを直接使用することとエイリアスとして使用することのmyecho
違いは何ですか?
ベストアンサー1
このコマンドでは
myecho=$(echo)
myecho
空のトークンを設定しています。だから次のコマンド
${myecho} "${app}"
簡単に言えば"${app}"
、これは明らかに「foo」です(予想されていません)。一つ作ってくれる?ニックネーム別の構文を使用してください。
alias myecho="echo"
追加資料:
- 2.3.1 エイリアスの置換(POSIX)
- 2.6.3 コマンドの置換(POSIX、
$(
使い方説明)