GNU/Linux >> Linux の 問題 >  >> Linux

シェルでダッシュ (ハイフン) を繰り返す方法

John1024 の役立つ回答は、all のオペランドからオプションを明確にする方法を示す一般的なソリューションを提供します POSIX ライクなユーティリティ。

この場合、最も簡単な解決策は (bash だけでなく、 、しかし ksh でも と zsh ):

printf '%.0s-' {1..100}

%.0s を配置する 以前 - 初期の - の問題を回避します 選択肢と間違われる。

少し最適化:

printf '%.s-' {1..100}


従来の for を使用することをお勧めします サブプロセスを生成したり、100 個の引数を展開したりする必要がないため、ループします。

N=100
for((i = 0; i < $N; ++i)); do
  printf -
done

printf -%s というのは興味深いです 「無効なオプション」をトリガーしますが、printf - ではない。おそらくさらに安全にするために、 printf %s - を実行できます .


for を使用 ループと番号の範囲:

for i in {1..10}; 
    do echo "-"; 
done

または 1 行で:

for i in {1..10}; 
    do echo -n "-"; 
done

---------- を出力する .

編集 :これは printf の前でした 編集してください。


これはエラーをスローします:

$ printf '-%.0s' {1..100}; echo ""
bash: printf: -%: invalid option
printf: usage: printf [-v var] format [arguments]

これは bash の下で正常に動作します :

$ printf -- '-%.0s' {1..100}; echo ""
----------------------------------------------------------------------------------------------------

他のシェルについては、以下を試してください:

printf -- '-%.0s' $(seq 100); echo ""

問題は printf でした - が期待されます オプションを開始します。この種の状況では、Unix/POSIX ユーティリティではよくあることですが、 -- printf へのシグナル これ以上の選択肢はありません。


Linux
  1. シェルがログイン/インタラクティブ/バッチであるかどうかを確認する方法は?

  2. シェルスクリプトで一時ファイルを作成するにはどうすればよいですか?

  3. ダッシュで検索を高速化する方法は?

  1. 名前が「-」(ハイフン、別名ダッシュまたはマイナス)で始まるファイルを削除するにはどうすればよいですか?

  2. シェルで引用をエスケープする方法は?

  3. 方法:無制限の Bash/シェル履歴?

  1. シェルスクリプトでスイッチを処理する方法は?

  2. Linuxでシェルを変更する方法

  3. Linuxシェルスクリプトに新しい行を挿入するには?