查看传递的参数

时间:2019-09-04 04:30:31

标签: linux bash

我有以下代码片段,我相信$ env_vars变量不是我期望的那样。

是否有一个程序/脚本可以代替docker,然后将整个命令行输出到终端?因此,我可以调试命令行问题,然后将docker替换回去。

docker run \
    -v $filePath:/script \
    -v $uuid:/secrets \
    $env_vars \ 
    $containerImage \
    bash /script/entry.sh

所以我可以拥有

someotherexe run \
    -v $filePath:/script \
    -v $uuid:/secrets \
    $env_vars \ 
    $containerImage \
    bash /script/entry.sh

它将打印

someotherexe run -v somepath:/script -v uuid:/secrets etc...

2 个答案:

答案 0 :(得分:2)

您可以将<Grid x:Name="MyGrid"> <Grid.RowDefinitions> <RowDefinition Height="*" /> </Grid.RowDefinitions> <ScrollViewer> <TextBlock Height="700" Background="Gray" Text="Hello World" /> </ScrollViewer> </Grid> 替换为docker

echo

答案 1 :(得分:0)

使用echo打印参数可能会引起误解,因为它只会将其参数与中间的空格混在一起。如果其中一个参数包含空格或非打印字符怎么办?

执行此操作的常用方法是将set -x放在命令之前,这使外壳程序在执行命令及其参数时会以其最喜欢的(有时是隐秘的)表示形式显示出来。

有时我也会使用类似的东西:

printargs() {
    if [ $# -eq 0 ]; then
        echo "printargs did not get any arguments"
    else
        echo "printargs got $# argument(s):"
        printf "   '%s'\n" "$@" | LC_ALL=C cat -vt
    fi
}

这将以奇怪但可见的格式打印非打印字符和非ASCII字符。例如:

carriagereturn=$'\r'
tab=$'\t'
$ echo –x "spaces and control characters$tab$carriagereturn" 
–x spaces and control characters
$ printargs –x "spaces and control characters$tab$carriagereturn" 
printargs got 3 argument(s):
   'M-bM-^@M-^Sx'
   'spaces and control characters^I^M'

这里发生的事情:一方面,使用printargs版本,很清楚哪些空格是参数的一部分,哪些空格是 之间的分隔符。 “ –x”具有一个Unicode破折号,而不是类似命令的工具识别为指示选项的普通ASCII连字符。 cat -vt部分将其UTF-8表示形式转换为一系列“元”(M-something)字符。回车和制表符是ASCII控制字符,特别是control-I和control-M,因此它使用^作为“ control-”的简写形式打印它们。

相关问题