私は$PATH
でこのdepends
ファイルがあります:私はdepends js kd
を実行し、それが返さループの各繰り返しでBashの配列に要素を追加する方法は?
#!/bin/bash
k=0
for i in "[email protected]"
do
DP[k]="nodejs-$i"
k=$((k+1))
done
echo $DP
を:
nodejs-js
私はなるだろう結果はだろうと思って、これは私を驚か:
nodejs-js nodejs-kd
ループが新しい要素を追加しようとしていたため、DP
アラーyの形式nodejs-$i
ここで$i
は私が実行したときにdepends
スクリプトに入力した入力です。私はこの代わりにスクリプトを使用して依存する試みた:
#!/bin/bash
DP=()
for i in "[email protected]"
do
DP+=("nodejs-$i")
done
echo $DP
それはjs kd
入力(すなわち、出力nodejs-js
であった)と、全く同じ結果を返さ。
それは ' "$ {DP [@]}"'でなければならない - 引用符で - ない '$ {DP [*]}'、一般的です。前者は内部空白を保持しますが、後者は保持しません。また、 'echo'は非推奨ではありません。明示的に 'bash'を使用している場合、その動作は一貫しています。 '/ bin/sh'の指定されていない種類を使うとき、' echo'は 'printf'には存在しない不一致を持っています - しかし' printf'自体はそのようなシェルには全く存在しないかもしれません。 –
@MarkReed thx!配列記法が修正されました! [echo POSIX標準のアプリケーションの使用法]セクション(http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html)によると、 'printf'組み込みコマンドは'エコー。 –
このガイドラインはPOSIX用です。与えられたコードは明示的にPOSIXに準拠していない '#!/ bin/bash'に対して明示的です - ' echo'は '-n'を含むオプションをとります。 –