我正在使用Mac OS
和Bash terminal
来做一些基本的脚本编写。
我有一些问题,当我在网上搜索时,我找不到答案
(或者可能是我的搜索关键字不好)
首先,我看到有三条路径:/bin, /usr/bin and /usr/local/bin
。某些命令(如grep
)位于/usr/bin
,而其他一些命令({1}}则位于ls
。
为什么我们有三个不同的箱子以及在那里放置类似命令的标准
其次,我想知道使用/bin
和`。
'
如果我尝试:
echo `date`
Fri Jan 10 10:36:52 PST 2014
awk '{print $1}' test.txt
1
2
3
4
所以何时使用awk `{print $1}` test.txt
-bash: {print: command not found
awk: syntax error at source line 1
context is
>>> test. <<< txt
awk: bailing out at source line 1
和`。
最后,上述'
有效。但这不起作用
awk with print
可以awk '{echo $1}' test.txt
和print
不能互换使用吗?
P.S:我是echo
的初学者,请善待
答案 0 :(得分:2)
简短答案不一定详尽无遗:
行情:
$(echo Hello)
来实现相同的目标。你不能轻易地将作为脚本传递的字符串中的awk和shell混合到awk中。 (例如:awk '{echo $1}' test.txt
)
答案 1 :(得分:1)
awk `{print $1}` test.txt
由于您使用的是背tics而不是单引号,因此失败 正确的:
awk '{print $1}' test.txt
然后它将打印文件中所有行的第一个字段。
awk '{echo $1}' test.txt
由于echo
不是awk
命令,因此不起作用。
告诉我们您拥有哪些文字以及您希望从中获得什么......
答案 2 :(得分:0)
你需要读一本书。我推荐Shell Scripting Recipes: A Problem-Solution Approach
(http://www.amazon.com/Shell-Scripting-Recipes-Problem-Solution-Approach/dp/1590594711)。阅读它,完成练习,然后回答问题,如果你有任何问题(甚至更好地在comp.unix.shell新闻组中询问它们,那本书的作者和所有其他shell专家都会在那里闲逛)。
答案 3 :(得分:0)
print
是一个awk命令。
echo
是一个shell命令。
反引号和$()
运行shell命令。
'
引用内容,使得shell不会扩展其中的任何内容。
答案 4 :(得分:0)
$(echo hello)
与:echo hello
相同。通过执行此操作,您需要bash解释器执行该命令的结果,即“hello”。但是你好不是一个命令(除非你自己定义)。
这些例子都是正确的:
foo=$(echo hello)
echo ${foo}
foo=(echo "echo hello")
${foo}