我有没有办法让bash文件在第二行传递参数
sh -c
git status;
echo "hello world"
这真是太丑了
sh -c "git status; echo "hello world""
我将sh传递给另一个命令,所以我不能这样做:
git status;
echo "hello world"
甚至可以做一些像这样的事情
echo
"hello world"
基本上我需要一种不在新行终止的方法
在这里寻找一种向xargs
传递命令的更漂亮的方式
https://stackoverflow.com/a/6958957/340688
答案 0 :(得分:1)
sh << EOF
git status
echo "hello world"
EOF
答案 1 :(得分:1)
在终端
echo \
"hello world"
或
sh -c \
"git status; \
echo "hello world""
答案 2 :(得分:1)
简单引用它。带引号的字符串可以扩展到多行。
sh -c '
git status
echo "hello world"'
您可以使用缩进和放置引号来找出最接近您的审美期望的内容。
# Does this look nicer?
sh -c '
git status
echo "hello world"
'
如果您想要进行变量扩展,您可能想要更改双引号和单引号。
dir=/src/project/
sh -c "
cd $dir
git status
echo 'hello world'
"
请注意,如果您想在-c
参数中进行更复杂的引用(包括单引号和双引号本身),则会变得混乱。在这种情况下,请考虑使用Srdjan Grubor建议的heredoc语法。但请注意,它通过标准输入将脚本提供给shell,而不是命令行参数。
对于您的第二个示例,只需转义换行符。
echo \
"hello world"
注意不要在\
和行尾之间放置任何其他空格(或其他字符,包括注释)。
有些人,包括我在内,如果这些反斜杠都在某个固定的列上对齐,就会发现代码更容易阅读。
echo \
"hello" \
"happy" \
"fruit gum" \
"world"
您的编辑可能会帮助您解决此问题。