首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么"echo foo | read a; echo $ a"没有按预期工作?

这个问题是关于在命令行中使用echoread命令的问题。echo命令用于输出文本,read命令用于从标准输入读取数据。在给出的问答内容中,我们试图将foo这个字符串通过echo命令输出,并使用read命令将其读入变量a中,然后输出变量a的值。

问题是这个命令没有按预期工作,原因是命令执行完echo后,shell会自动换行,而read命令是从标准输入读取数据的,所以它会在换行后等待用户输入。为了解决这个问题,我们可以使用-n选项告诉echo命令不要在输出后换行,这样read命令就可以正确读取数据了。修改后的命令如下:

代码语言:txt
复制
echo -n foo | read a; echo $a

这个命令将会按预期工作,输出foo

总结一下,这个问题并不是关于云计算的,而是关于Linux命令行的使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Shell 脚本避坑指南(一)

直接声明 (MoeLove)➜ ~ foo=1+1 (MoeLove)➜ ~ echo $foo 1+1 直接声明最简单,但正如前面提到的,直接声明会默认当作 string 进行处理,不能在声明时进行算术运算...declare 声明 (MoeLove)➜ ~ declare foo=1+1 (MoeLove)➜ ~ echo $foo 1+1 除去直接声明变量外,比较常用的方法是用 declare 来声明变量...,但默认情况下,其声明的变量都是 string 处理的,无法进行正常的算术运算。...执行脚本后,你会发现没有任何报错,但结果并不是我们预期的。这类可能是手误居多,所以我们需要检查是否存在未绑定的变量。 (MoeLove)➜ ~ cat add.sh #!...为什么呢?主要是由于在脚本顶部增加的 set -e 选项。 该选项在遇到首个 非0 值的时候会直接退出。

62230

Bash 编程易错总结大全

但是,如果你进一步思考,假设当前目录上没有文件时会怎么样?没有文件的时候,*.mp3 不会被展开直接传递给 for 循环处理,所以这个时候循环还是会执行一次。这种情况不是我们预期的行为。...[ $foo > 7 ]] 原文作者认为算术比较不应该用 [[,而是用 ((,我没弄明白是为什么。...8. grep foo bar | while read -r; do ((count++)); done 这种写法初看没有问题,但是你会发现当执行完后,count 变量并没有变化。...事实却是因为,foo 变量在这里没有使用双引号,所以在解析的时候会进行单词拆分[13]和文件名展开[14],最终导致执行结果与预期大相径庭: msg="Please enter a file name...不幸地是,你认为明显正确地修复方法,也不能工作,你会发现反斜杠并没有转义感叹号[18]: # echo "hi\!" hi\!

2.8K10

PHP7.+系列新特性和新变更

预期 它使得在生产环境中启用断言为零成本,并且提供当断言失败时抛出特定异常的能力。...命名空间组导入 从同一个命名空间下导入的类、函数、常量支持组一次导入 #php7以前 use app\model\A; use app\model\B; #php7+ use app\model{A...它允许在生成器函数中通过使用 return 语法来返回一个表达式 (但是不允许返回引用值), 可以通过调用 Generator::getReturn() 方法来获取生成器的返回值, 但是这个方法只能在生成器完成产生工作以后调用一次....会话选项设置 session_start() 可以加入一个数组覆盖php.ini的配置 session_start([ 'cache_limiter' => 'private', 'read_and_close...(如果代码中没有捕获 Error 异常,那么会引发致命错误)。set_error_handle不一定接收的是异常,有可能是错误。

63830

JMeter接口测试与数据驱动

${param}={“foo1”:”bar1”, “foo2”:”bar2”} 拼接完整的请求是: https://postman-echo.com/post POST data: {"foo1":"bar1...虽然他们的预期值都是变量${expectValue}, 但实际值是不同的 用例C001的预期值:${expectValue}: foo1=bar1 用例C002的预期值${expectValue}:foo2...=bar2 用例C003的预期值${expectValue}: {“foo1”:”bar1”,”foo2”:”bar2”} 12.再来看下用户自定义变量 ?...在数据表格文件中还有些参数没有用到, 比如priority字段, 可以根据需求适当添加相应判断, 本篇幅仅为抛砖引玉, 如您有更好的idea, 欢迎抛过来....最后来一碗鸡汤: 你现在的生活水平,是你三年前的工作状态决定的;而你现在的努力程度,会决定你三年后的生活;软件行业是个逆水行舟,不进则退的行业,既然选择了这个行业,那么就要努力地“敲”下去。

1K10

芯片开发最常用的Makefile语法和功能

这意味着如果你需要创建一个包含单个空格的变量,直接在变量赋值时使用空格可能会因行首空格被忽略而导致无法达到预期效果。...,就是简单的串接: foo := start foo += more all: echo $(foo) 结果如下: start more 对于没有定义的变量,那就是空字符串。...当然也可以最第一行最后加反斜杠进行转义: all: @export foo=hello \ echo $${foo} $$符号的用法 上面我们使用了echo ${foo},为什么要使用两个符号主要用于将...three; do \ echo ; \ end 因为foo已经定义了,所以$(foo)就是one two three;而i变量没有在Makefile中定义,因此转化成了空。...平时用Makefile来做一些芯片方面的像vcs仿真编译这些工作,上面将的Makefile中的知识就大概够用了。但Makefile还有一个经常使用的场景,就是对C文件的编译。

7210

PHP7新特性和变化

; 预期 它使得在生产环境中启用断言为零成本,并且提供当断言失败时抛出特定异常的能力。...它允许在生成器函数中通过使用 return 语法来返回一个表达式 (但是不允许返回引用值), 可以通过调用 Generator::getReturn() 方法来获取生成器的返回值, 但是这个方法只能在生成器完成产生工作以后调用一次...会话选项设置 session_start() 可以加入一个数组覆盖php.ini的配置 session_start([ 'cache_limiter' => 'private', 'read_and_close...(如果代码中没有捕获Error异常,那么会引发致命错误)。set_error_handle不一定接收的是异常,有可能是错误。...之前: if (is_array($foo) || $foo instanceof Countable) { // $foo 是可数的 } 之后: if (is_countable($foo))

4K41

第八章:从 shell 眼中看世界

Knowing this, we can see that echo behaved as expected. 那么刚才发生了什么事情呢? 为什么 echo 不打印”*“呢?...当回车键被下时,shell 在命令被执行前在命令行上自动展开任何符合条件的字符,所以 echo 命令的实际参数并不是”*“,而是它展开后的结果。...知道了这个以后,我们就能明白 echo 的行为符合预期。...当它用在一个单词的开头时,它会展开成指定用户的家目录名,如果没有指定用户名,则展开成当前用户的家目录: [me@linuxbox ~]$ echo ~ /home/me If user “foo” has...我们想把这些相片年月先后组织起来。首先,我们要创建一系列以数值”年-月”形式命名的目录。通过这种方式,可以使目录名按照年代顺序排列。我们可以手动键入整个目录列表,但是工作量太大了,并且易于出错。

19610
领券