小编use*_*685的帖子

将变量传递给使用“EOF”并将变量视为文字的 bash 脚本

在这个脚本中,我最终将“$1”保存到 /test 文件中。

#!/bin/bash
cat > /test << 'EOF'
$1
EOF
Run Code Online (Sandbox Code Playgroud)

事实是..我需要保持

'EOF'
Run Code Online (Sandbox Code Playgroud)

为“EOF”,因为我的论点($1)包含美元符号。

但我需要保存该参数而不是 1 美元

bash shell-script cat here-document

10
推荐指数
2
解决办法
5万
查看次数

当没有提供路径时,如何告诉“cat”命令不要挂起?

我只是想获取一个 bash 脚本
来返回文本文件的内容。

#!/bin/bash
cat $1
Run Code Online (Sandbox Code Playgroud)

问题是.. 当文件路径没有提供给这个 bash 脚本时......它甚至如何关闭自己。

因为通过常规命令行......如果没有文件路径被提供给 cat 命令......它不会挂断。

几乎就像在等待什么一样..

shell-script cat

6
推荐指数
3
解决办法
2万
查看次数

“cat”命令:如何自动转义所有可能违规的内容?

如果复制内容

httpd.conf
Run Code Online (Sandbox Code Playgroud)

然后将其粘贴到 cat 命令中.. 比如这个..

#!/bin/bash
cat > /test << EOF
pasted here..
EOF
Run Code Online (Sandbox Code Playgroud)

你遇到这个错误:

-bash: command substitution: line 1: unexpected EOF while looking for matching `''
-bash: command substitution: line 4: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

也许解决方案是逃避美元符号,甚至可能是引号等等。

但考虑到这是一个如此大的文件..可以自动转义美元符号吗?

我唯一的选择是通过另一个程序将它们转义,然后将其提供给 cat 命令吗?

command-line shell quoting cat here-document

5
推荐指数
2
解决办法
1万
查看次数

Bash 脚本:将变量传递给包含引号、单引号的 bash 脚本。等等

让我们假设这是字符串:

   'a',"b"
Run Code Online (Sandbox Code Playgroud)

它包含单引号和双引号。

您将如何将其作为单个字符串传递给 bash 脚本?

这是 bash 脚本:

#!/bin/bash
echo $1
Run Code Online (Sandbox Code Playgroud)

它必须回声

'a',"b"
Run Code Online (Sandbox Code Playgroud)

但我们不能假设字符串这么小。最终我计划发送整个

 /etc/httpd/conf/httpd.conf
Run Code Online (Sandbox Code Playgroud)

作为此 bash 脚本的字符串。

所以我不能一次转义引号和单引号。

shell bash quoting arguments variable

1
推荐指数
1
解决办法
1427
查看次数