私は初めてbashスクリプトに触れました。
printfを使用して実行する準備ができたコマンドの形式を指定し、変数に割り当てたいと思います。
しかし、すぐに実行されます。/opt/cinar/packages/libcnrhttp2_*
コマンド文字列に文字列として書き込むのではなく、リストすることです。
私はこれを期待しています:
ssh [email protected] ls /opt/cinar/packages/libcnrhttp2_* -lr | awk 'NR==1'
#!/bin/bash
declare -r libcnrhttp2="libcnrhttp2_"
declare -r root="/opt/cinar/packages"
declare -r destination="/opt/cinar/packages"
declare -r id=ctopkaya
declare -r host=192.168.13.137
declare -r remote=$id"@"$host
declare cmd=""
printf -v cmd ssh %s ls %s/%s* -lr | awk 'NR==1' $remote /opt/cinar/packages libcnrhttp2_
cd $destination
echo "--------------"
echo $cmd
echo "--------------"
答え1
テキスト形式を指定する必要があるコマンドは二重引用符内にあるため、印刷するテキストとして扱われます。コマンドの結果を印刷するには、コマンドを内部に入れます$()
(コマンドの置き換え)。例:
printf "$(printf foo | awk 'NR==1') bar"