سلام
من می خواهم یک سری دستورات را بصورت پویا ایجاد کنم.دستوراتی که می خوام اجرا کنم اینا هستند:
cat myfile | cut -d- -f1-5 | grep -v "\-[0-9]"
cat myfile | cut -d- -f1-5 | grep "\-[0-9]" | cut -d- -f1-4 | grep -v "\-[0-9]"
cat myfile | cut -d- -f1-5 | grep "\-[0-9]" | cut -d- -f1-4 | grep "\-[0-9]" | cut -d- -f1-3 | grep -v "\-[0-9]"
cat myfile | cut -d- -f1-5 | grep "\-[0-9]" | cut -d- -f1-4 | grep "\-[0-9]" | cut -d- -f1-3 | grep "\-[0-9]" | cut -d- -f1-2 | grep -v "\-[0-9]"
cat myfile | cut -d- -f1-5 | grep "\-[0-9]" | cut -d- -f1-4 | grep "\-[0-9]" | cut -d- -f1-3 | grep "\-[0-9]" | cut -d- -f1-2 | grep "\-[0-9]" | cut -d- -f1-1 | grep -v "\-[0-9]"
برای ایجاد این دستورات در برنامه ام قطعه کد زیر را نوشته ام:
n=5
while [ $n -ge 1 ]
do
declare -a fnd
#creating cmd to be executed
cmdStr="cat myfile | "
counter=5
cmdStr+="cut -d- -f1-${counter} | "
counter=$(($counter - 1))
while [ $(($counter - $n)) -ge 0 ]
do
cmdStr+="grep \"\-[0-9]\" | "
cmdStr+="cut -d- -f1-${counter} | "
counter=$(($counter - 1))
done
cmdStr+="grep -v \"\-[0-9]\""
printf "To be executed : %s\n" "$cmdStr"
fnd=($($cmdStr))
unset fnd
unset cmdStr
n=$(($n - 1))
done
ولی موقعی که اجرا می کنم، خطای زیر را می دهد:
cat: invalid option -- 'd'
Try `cat --help' for more information.
فکر می کنم مربوط به خط زیر باشد:
fnd=($($cmdStr))
لطفا راهنمایی ام کنید.