是否可以使用内置"读"使用本地,只读或声明选项?

时间:2014-06-25 14:55:53

标签: bash

使用bash内置"阅读"要从用户输入设置变量,是否可以将该变量设置为本地(在函数中),只读或使用各种声明选项(例如,声明-i)?

如果没有,你如何处理从用户输入读取的变量?我最大限度地减少脚本中存在的全局变量。

2 个答案:

答案 0 :(得分:1)

如果要将变量设置为本地变量,可以在调用read?:

之前声明变量
local input
read input

如果它应该是一个数组,read支持-a开关:

local arr
read -a arr
<type>foo bar 123

readonly变量无法传递给read。这是因为read将尝试将输入数据写入变量:

readonly foo
read foo
<type> ...

输出:

test.sh: line 2: foo: readonly variable

您可以使用此解决方法:(但请查看@ gniourf_gniourf&#39;评论)

local tmp
read tmp

readonly variable="$tmp"

您可能还会读入使用-i声明的整数变量。在这种情况下,任何非数字输入都将被解释为0

declare -i number
read number
<type>ABC

echo "$number" # 0

declare -i number
read number
<type>123

echo "$number" # 123

答案 1 :(得分:1)

您可以在以后设置readonly属性:

local A
read A
readonly A
A=1 ## error