我尝试将参数传递给函数install(),但输出为" add"而不是我的论点。 当我调用函数目录-install()时,我不知道如何获得REP,因为知道我有所有短语"添加目录...."
function install () {
echo $1 #output not ok, show "add"
}
function directory-install () {
read -p "enter directory " REP
if cd $REP 2> /dev/null ; then
echo -e "add directory '$REP'\n"
else
mkdir REP
echo -e "creat directory \n"
fi
echo $REP
}
REP=$(directory-install)
echo $REP #output not ok too show "add directory..." but i just want the REP .
install $REP
答案 0 :(得分:1)
您的install
功能正常工作,问题在于您将垃圾传递给它。垃圾进,垃圾出。
真正的罪魁祸首是你的directory-install
功能。当您执行REP=$(directory-install)
时,变量REP
现在包含来自directory-install
的所有文本输出,而不仅仅是最终echo $REP
。这意味着add directory
或creat directory
文字。
如果您希望directory-install
仅 返回REP
,那么您需要确保在函数调用中没有其他输出 。或者,您可以将非返回文本重定向到STDERR,在那里它将被显示,但不会被捕获。
示例:强>
function badExample() {
echo "Hello World"
echo "ReturnText"
}
rtn=$(badExample)
# rtn now contains "Hello World\nReturnText"
function goodExample() {
echo "Hello World" 1>&2
echo "ReturnText"
}
rtn=$(goodExample)
# "Hello World" will appear on screen and rtn contains "ReturnText"