我有以下bash腳本,我一直在尋找生成一個示例fio交通模擬命令。在腳本中,我採用CWD,然後查找具有特定文件名的設備。然後,我將這些帶有相應參數的文件名追加到要運行的命令上,但是當我運行該命令時,所有參數都用單引號引起來。 我想要什麼,需要的是Bash單引號出自沒有的地方。我如何擺脫它們?
fio --ioengine=libaio --rw=randrw --iodepth=512 --size=10GB --name="output0" --filename="/dev/mapper/mpathfu" --name="output1" --filename="/dev/mapper/mpathfua" --name="output2" --filename="/dev/mapper/mpathfub" --name="output3" --filename="/dev/mapper/mpathfuc"
相反,我所得到的是...(請帶的不是單引號)。
+ fio --ioengine=libaio --rw=randrw --iodepth=512 --size=10GB '--name="output0"' '--filename="/dev/mapper/mpathfu"' '--name="output1"' '--filename="/dev/mapper/mpathfua"' '--name="output2"' '--filename="/dev/mapper/mpathfub"' '--name="output3"' '--filename="/dev/mapper/mpathfuc"'
這是劇本,我已經試過大量的組合所以我很抱歉,如果腳本中存在一點混亂的話。沒有什麼我嘗試會工作。我如何編寫腳本而不必處理單引號?
#fio --ioengine=libaio --rw=randrw --iodepth=512 --size=1800GB --rw=randrw --name="output1" --filename="/dev/mapper/mpathco"
cwd=$(pwd)
x=($(ls -1 ./ | grep -i mpath))
s=" "
#echo ${x[@]}
len=${#x[@]}
len=`expr $len - 1`
#echo $len
for i in `seq 0 $len`; do s=$s\ --name=\"output$i\"\ --filename=\"$cwd/${x[$i]}\"; done
echo $s
x=`echo $s`
COMMAND=fio\ --ioengine=libaio\ --rw=randrw\ --iodepth=512\ --size=10GB\ $x
echo "$COMMAND"
$COMMAND
這正是我需要的,但我運行命令的時間,我得到 FIO --ioengine = libaio的--rw = randrw --iodepth = 512 --size = 10GB'--name =「output0」'--filename =「/ dev/mapper/mpathfu」' –
PS你的代碼可能需要改變一點點.. #fio --ioengine = libaio --rw = randrw --iodepth = 512 --size = 1800GB --rw = randrw --name =「output1」--filename =「/ dev/mapper/mpathco」 cwd = $(pwd) x = $(find $(pwd)-iname「* mpath *」| awk'{printf'--name = \「output%d \」--filename = \「%s \」「,i ++,$ 1}') echo $ x COMMAND =「fio --ioengine = liba io --rw = randrw --iodepth = 512 --size = 10GB $ x「 echo」$ COMMAND「 $ COMMAND –
我修復了一個問題,現在可以嘗試嗎? – BMW