GNU/Linux >> Belajar Linux >  >> Linux

Cara mengulang tanda hubung (tanda hubung) di shell

Jawaban membantu John1024 memberikan solusi umum yang menunjukkan cara membedakan opsi dari operan untuk semua Utilitas seperti POSIX.

Dalam kasus yang ada, solusi paling sederhana adalah (berfungsi tidak hanya di bash , tetapi juga di ksh dan zsh ):

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

Menempatkan %.0s sebelum - menghindari masalah - awal disalahartikan sebagai opsi.

Sedikit dioptimalkan:

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


Saya akan merekomendasikan menggunakan for tradisional loop, karena tidak perlu menelurkan sub-proses atau memperluas 100 argumen:

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

Sangat mengherankan bahwa printf -%s memicu "opsi tidak valid" tetapi printf - tidak. Agar lebih aman, Anda bisa melakukan printf %s - .


Gunakan for lingkaran dan rentang angka:

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

Atau dalam satu baris:

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

yang menghasilkan ---------- .

EDIT :Ini sebelum printf Anda sunting.


Ini menimbulkan kesalahan:

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

Ini bekerja dengan baik di bawah bash :

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

Untuk shell lain, coba:

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

Masalahnya adalah printf mengharapkan - itu memulai sebuah opsi. Seperti yang umum di antara utilitas Unix/POSIX dalam situasi seperti ini, -- sinyal ke printf untuk tidak mengharapkan lebih banyak pilihan.


Linux
  1. Bagaimana Menangani Switch Dalam Script Shell?

  2. Bagaimana cara menyisipkan baris baru di skrip shell Linux?

  3. Saat menggunakan printf bagaimana cara keluar dari karakter khusus dalam skrip shell?

  1. Bagaimana Cara Menghapus File Yang Namanya Dimulai Dengan "-" (tanda hubung A.k.a. Dash Atau Minus)?

  2. Bagaimana Cara Menghindari Kutipan Di Shell?

  3. Bagaimana Cara Memeriksa Apakah Shell Masuk/interaktif/batch?

  1. Bagaimana Membuat File Sementara Di Shell Script?

  2. Bagaimana Cara Mempercepat Pencarian Di Dash?

  3. Cara Mengganti Shell di Linux