[英]Bash - what's the difference between reading a variable and directly assigning it?
出于好奇,以下内容有什么区别。
我有一个脚本,我正在从KB转换为MB。 我正在使用命令替换来分配变量,但是看不到分配变量的区别如下:
backup_size=$(echo "$client_kb/1024" | bc -l)
&
read backup_size < <(echo "$client_kb/1024" | bc -l)
每种做事方式都需要什么?
谢谢
对于像数字这样的简单值,没有区别。 但是,请尝试使用包含尾随空格或多于一行的值:
#! /bin/bash
func () {
printf $'1 2\n3 '
}
command_substitution=$(func)
read process_substitution < <(func)
set -xv
[[ "$command_substitution" == "$process_substitution" ]]
除了@choroba提到的内容。 它还对错误处理有影响。 考虑一种情况,仅当sample_func
返回成功的错误代码时,才可以使用该输出。
sample_func() {
echo "Hello world"
return 1
}
command_substitution=$(sample_func)
rc=$?
echo "Error: $rc"
echo "command_substitution: $command_substitution"
echo '---'
read process_substitution < <(sample_func)
rc=$?
echo "Error: $rc"
echo "process_substitution: $process_substitution"
输出继电器:
Error: 1
command_substitution: Hello world
---
Error: 0
process_substitution: Hello world
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.