我有一个$myvar包含两行的变量,我想将其中的第一个放入一个新变量中。
当我尝试:
$ myvar1 = $(echo $myvar | head -n 1)
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为 echo 不会像我期望的那样输出换行符。
显然我可以这样做:
$ myvar1 = $(echo $myvar | cut -d " " -f 1)
Run Code Online (Sandbox Code Playgroud)
它将工作,因为 echo 的输出在第一行包含一个单词,在第二行包含一个单词。
我有两个问题:
在搜索一个简单的 bash 函数来回显我的外部 IP 地址时,我遇到了这篇文章,其中包含以下示例:
function ext-ip () { curl http://ipecho.net/plain; echo; }
Run Code Online (Sandbox Code Playgroud)
我想知道echo在这种情况下是如何工作的;手册页curl和echo联机帮助页都不是很有帮助。为什么它会回显上一个curl命令的响应体?与例如相比,以这种方式做有什么好处echo "$(curl -s http://ipecho.net/plain)"吗?我只是问,因为后者的语法似乎更透明/直截了当。
这个问题与已经提出的问题有关如何将文本添加到文件开头
丹尼斯威廉姆森建议的答案可以完成这项工作:
echo 'task goes here' | cat - todo.txt > temp && mv temp todo.txt
在上面,字符串task goes here被添加到文件的开头。
如果字符串task goes here在名为 的文件中myfile.txt,那么我应该如何更改命令?echo 'myfile.txt'...或者echo myfile.txt...不做这项工作。
假设我有这个简单的 C 程序,它向 shell 返回 4。
int main()
{
return 4;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它,然后做echo $?,我会得到4,这是预期的
$ gcc foo.c && ./a.out
$ echo $?
4 <<<< expected
Run Code Online (Sandbox Code Playgroud)
但是当我执行以下操作时,我什么也没得到
$ gcc foo.c && ./a.out && echo $?
$ <<<< Nothing - WHY????
Run Code Online (Sandbox Code Playgroud)