繁体   English   中英

Bash-读取变量和直接分配变量有什么区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM