変数を繰り返す方法

変数を繰り返す方法

私のcshスクリプトには少なくとも2行の出力を提供するコマンドがありますが、おそらくそれ以上です。この行を別の変数に変換して別のコマンドに渡します。コマンド1で各変数の出力を繰り返し実行するように2番目のコマンドをどのように設定できますか?以下は、コマンド1の出力を変数に変換したものです。

set vars = `echo "command 1"`

set numRows = $#vars  
if ($numRows < 2) then  
        echo "ERROR! $numRows rows!"  
        exit  
endif  


`echo '/command2 -L '$vars[1]'`

ベストアンサー1

ちなみに私は自分自身を憎んでいないので、cshではなくbashを使用しています。しかし、cshではこれをすべて行うことができます。翻訳するだけです。 Bashで作業するには、まず「bash --login」を実行してからBashで作業できます。

シェルスクリプトで説明されているタスクを実行するために、プログラミング言語のようにループの代わりにパイプを使用します。誤解しないでください。はいcshとbashのループ構造は異なりますが、説明する内容については異なる方法で行います。

複数行の出力を生成するコマンドがあり、他のコマンドにその行で一度に1つずつ操作を実行させるには、たぶん次のようなものがあります:

cat-file.txt | grep "いくつかの単語"

grep コマンドは、cat コマンドの STDOUT にパイプされる STDIN の各行を処理します。これはマイナーな例ですが、便利です。

その他:

エコ「1、2、3」 tr ',' '\n'

これにより、すべてのコンマが改行文字に変わり、1行の入力から3行の出力が生成されます。

ディレクトリ内のすべてのファイルの名前に拡張子を追加するには、次のようにします。

cd directory
for filename in *
do
  mv ${filename} ${filename}.extension
done

*はファイルワイルドカードモードです。ファイルグロービングとは、コマンドラインのパターンが、グロービングパターンと一致する現在のディレクトリのファイル名に置き換えられることを意味します。 *は「何でも」を意味します。

おすすめ記事