数値リストの最初または2番目のフィールドが146であることを確認するために、次の行を作成しました。
から行を実行したいですtcsh
。そのうちの1つはで説明されていますbash
。
ここで問題は何ですか?
echo $numbers
146 146 0 16 16 10 42 12 10 32 32 3 2 32 26
tcsh
bash -c 'for i in 1 2; do if [ 146 = `echo $numbers | cut -f$i -d' ' ` ]; then echo "NUM is OK "; fi done'
間違い:
` ]; then echo "NUM is OK "; fi done: -c: line 0: unexpected EOF while looking for matching ``'
` ]; then echo "NUM is OK "; fi done: -c: line 1: syntax error: unexpected end of file
ベストアンサー1
「スクリプト」にはいくつかの問題があります。最大の問題は、'
ある種のエスケープが必要であるということです。二重引用符で囲まれた文字列内のバックティックの内側は面倒です。
$()
代わりに逆引用符を使用し、二重引用符を区切り文字として使用しない限り、これを完全に回避できます。
... if [ 146 -eq $(echo $numbers | cut -f$i -d\ ) ]; then ...
これは-eq
数値の適切な述語であるため、正しく機能するにはエクスポート$numbers
する必要があります。
適切なスクリプトを作成してそこから呼び出すのがtcsh
最善です。