myfile # set bash to inform me about th-6ren">
gpt4 book ai didi

bash set -x 和流

转载 作者:行者123 更新时间:2023-11-29 09:17:41 25 4
gpt4 key购买 nike

你能给我解释一下下面测试脚本的输出吗:

# prepare test data
echo "any content" > myfile

# set bash to inform me about the commands used
set -x

cat < myfile

输出:

+cat
any content

即为什么以 + 开头的行不显示“< myfile”位?

如何强制 bash 这样做。我需要将脚本的行为告知用户,如下所示:

mysql -uroot < the_new_file_with_a_telling_name.sql

我不能。

编辑:附加上下文:我使用变量。原代码:

SQL_FILE=`ls -t $BACKUP_DIR/default_db* | head -n 1` # get latest db
mysql -uroot mydatabase < ${SQL_FILE}

-v 不会扩展变量和cat file.sql | mysql 将产生两行:

+mysql
+cat file.sql

所以这个技巧也没有。

最佳答案

你可以试试 set -vset -o verbose而是启用命令回显。

在我的机器上运行的例子:

[me@home]$ cat x.sh 
echo "any content" > myfile
set -v
cat < myfile

[me@home]$ bash x.sh
cat < myfile
any content

这里需要注意的是 set -v只是按字面意思回显命令,不进行任何 shell 扩展或迭代。正如 Jonathan 在评论中指出的那样,如果文件名是在变量中定义的(例如 command < $somefile ),这可能会导致难以识别 $somefile 是什么。指的是。

关于bash set -x 和流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14461871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com