2

在下面的代码中,我尝试将变量分配给两个 yad 值 Radius 和 Amount。

这可以通过将 yad 值打印到文件来使用 awk 来完成,但如果可以的话,我想避免这种情况。

字符串(即两个 yad 值)被分配一个变量并根据需要使用 sed 修剪字符。然而,脚本停在这一行;

radius=$(sed 's|[amount*,]||g')

两个问题

  1. 有没有更好的方法来解决这个问题;和

  2. 为什么脚本没有完成?我一直无法弄清楚语法。

编辑:不需要循环并使用 sed 语法

  #!/bin/bash
    #ifs.sh

        values=`yad --form --center --width=300 --title="Test" --separator=' ' \
            --button=Skip:1 \
            --button=Apply:0 \
            --field="Radius":NUM \
                '0!0..30!1!0' \
            --field="Amount":NUM \
                '0!0..5!0.01!2'`

            radius=$(echo "$values" | sed 's|[amount*,]||g')
            amount=$(echo "$values" | sed 's/.a://')

            if [ $? = 1 ]; then
            echo " " >/dev/null 2>&1; else

            echo "Radius = $radius"
            echo "Amount = $amount"
        fi
    exit

备择方案

# with separator
#  radius="${values%????????}"
#  amount="${values#????????}"

# without separator
#   radius=$(echo "$values" | sed s'/........$//')
#   amount=$(echo "$values" | sed 's/^........//')
4

2 回答 2

0

编辑:根据@Ed Morton 更改答案

#!/bin/bash
#ifs.sh

values=($(yad --form --center --width=300 --title="Test" --separator=' ' \
            --button=Skip:1 \
            --button=Apply:0 \
            --field="Radius":NUM \
                '0!0..30!1!0' \
            --field="Amount":NUM \
                '0!0..5!0.01!2'))

if [ $? -eq 0 ]; then
    radius="${values[0]}"
    amount="${values[1]}"
fi
exit

bash -x 输出

+ '[' 0 -eq 0 ']'
+ radius=7.000000
+ amount=1.000000
+ exit
于 2018-08-19T03:23:36.550 回答
0

这比你想象的要容易:

$ values=( $(echo '7.000000 0.100000 ') )
$ echo "${values[0]}"
7.000000
$ echo "${values[1]}"
0.100000

替换$(echo '7.000000 0.100000 ')yad ...脚本将是:

values=( $(yad --form --center --width=300 --title="Test" --separator=' ' \
        --button=Skip:1 \
        --button=Apply:0 \
        --field="Radius":NUM \
            '0!0..30!1!0' \
        --field="Amount":NUM \
            '0!0..5!0.01!2') )

if [ $? -eq 0 ]; then
    echo "Radius = ${values[0]}"
    echo "Amount = ${values[1]}"
fi
于 2018-08-19T19:08:37.707 回答