Aşağıdakine benzer oldukça basit bir komut dosyam var:
#!/bin/bash
VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'
echo $MOREF
Bu betiği komut satırından çalıştırdığımda ve argümanları ilettiğimde, herhangi bir çıktı alamıyorum. Ancak, $MOREF
değişkeni içinde yer alan komutları çalıştırdığımda çıktı alabiliyorum.
Bir komut dosyası içinde çalıştırılması gereken bir komutun sonuçları nasıl alınabilir, bir değişkene kaydedilebilir ve ardından bu değişkenin ekran çıktısı nasıl alınabilir?
Backtick
'ye ek olarak, okumayı daha kolay bulduğum ve iç içe geçmeye izin veren command
$(command)
veya "$(command)"
kullanabilirsiniz.
OUTPUT="$(ls -1)"
echo "${OUTPUT}"
MULTILINE=$(ls \
-1)
echo "${MULTILINE}"
Alıntı yapmak ("
) çok satırlı değerleri korumak için önemlidir.
Doğru yol şudur
$(sudo run command)
Eğer kesme işareti kullanacaksanız, '
değil `` `` kullanmanız gerekir. Bu karaktere "backticks" (veya "grave accent") denir.
Bunun gibi:
#!/bin/bash
VAR1="$1"
VAR2="$2"
MOREF=`sudo run command against "$VAR1" | grep name | cut -c7-`
echo "$MOREF"