当前位置: 技术问答>linux和unix
shell函数问题
来源: 互联网 发布时间:2016-11-25
本文导语: 初学shell函数, 在shell中定义如下函数: foo() { echo "hello"; } **************** 如下调用: $`foo` 出错, $y=`foo` $echo $y hello 请问单独调用`foo`为什么会报错呢? | 纯粹是按自己的臆想在那乱搞。 $`foo` 出错, $y=`f...
初学shell函数,
在shell中定义如下函数:
foo() { echo "hello"; }
****************
如下调用:
$`foo`
出错,
$y=`foo`
$echo $y
hello
请问单独调用`foo`为什么会报错呢?
在shell中定义如下函数:
foo() { echo "hello"; }
****************
如下调用:
$`foo`
出错,
$y=`foo`
$echo $y
hello
请问单独调用`foo`为什么会报错呢?
|
纯粹是按自己的臆想在那乱搞。
$`foo`
出错,
$y=`foo`
$echo $y
--------
我要向你反问一个问题
1。同样是调用为什么前面用$`foo` 后面用`foo` ! 明显前面$`foo`是错的!
好了,解释一下
如果你直接
`foo`
这样就是调用函数了 简单的脚本就是这样
#!/bin/sh
foo() { echo "hello"; }
`foo`
可是foo函数的返回值是hello 那么上面调用函数的地方就变成了hello
#!/bin/sh
foo() { echo "hello"; }
hello
这下可好了 脚本会把hello当成命令来执行! 可是你认为你的系统会有hello这个命令吗?!
自然脚本回报找不到hello这个命令! 如果你把hello换成系统存在的命令 这个脚本是会执行成功的。
而你的第二种方法
$y=`foo`
这样直接把foo的返回值赋给变量y了 当然没有问题了
然后你又
echo $y
这样会输出变量y的值 会输出hello
同理 既然你知道用echo 为什么在第一种调用里 你不用echo `foo`呢 同样会执行成功!
刚开始学习shell的时候 最好不要按自己的想法去乱来 一定要找个基础教程 一边学一边练
等你有一定基础的时候 在一步一步的去深入研究!
推荐一个教程http://www.linuxsir.org/main/doc/abs/abs3.7cnhtm/index.html
$`foo`
出错,
$y=`foo`
$echo $y
--------
我要向你反问一个问题
1。同样是调用为什么前面用$`foo` 后面用`foo` ! 明显前面$`foo`是错的!
好了,解释一下
如果你直接
`foo`
这样就是调用函数了 简单的脚本就是这样
#!/bin/sh
foo() { echo "hello"; }
`foo`
可是foo函数的返回值是hello 那么上面调用函数的地方就变成了hello
#!/bin/sh
foo() { echo "hello"; }
hello
这下可好了 脚本会把hello当成命令来执行! 可是你认为你的系统会有hello这个命令吗?!
自然脚本回报找不到hello这个命令! 如果你把hello换成系统存在的命令 这个脚本是会执行成功的。
而你的第二种方法
$y=`foo`
这样直接把foo的返回值赋给变量y了 当然没有问题了
然后你又
echo $y
这样会输出变量y的值 会输出hello
同理 既然你知道用echo 为什么在第一种调用里 你不用echo `foo`呢 同样会执行成功!
刚开始学习shell的时候 最好不要按自己的想法去乱来 一定要找个基础教程 一边学一边练
等你有一定基础的时候 在一步一步的去深入研究!
推荐一个教程http://www.linuxsir.org/main/doc/abs/abs3.7cnhtm/index.html