请教Linux shell命令中双引号与单引号嵌套的问题

请教Linux shell命令中双引号与单引号嵌套的问题,第1张

1、首先在Linux系统中,使用echo $ 0来显示如下输出。

2、查看Linux系统上可用的所有shell,文件/ etc / shells中列出了Linux系统上可用的所有shell。 可以使用cat命令或更少的命令来查看文件的内容。

3、更改shell以使用另一个shell,要使用其他shell,只需输入其名称即可登录新shell。

4、永久更改Linux中的默认Shell,Linux允许您使用chsh命令更改默认Shell。 为您自己的登录用户更改默认Shell的最佳方法是,使用-s选项指定/ etc / shells文件中列出的Shell名称。

这个问题表面你不会 C 语言。

转义符就表示这个符号后面的字符,不在代表他的基础意义,而是转变为另一个意思。

在所有系统里面,引号 ' " ` 。都有特殊用途。

用来引出特殊目的“字串”。

但有的时候,你明明需要字串里面出现的就是引号,但引号已经作为特殊用途,会被程序识别为字串开始或者结束符号,这个怎么解决?

就用 \ 进行转义,表面他后面的引号不再是字符串表示符。而是作为普通字符处理。

转义符还有很多别的用途,用来转变后面那个字符的意思。如果你学过 C 语言,这个问题你就不需要来问了。

比如 \n 换行。\\ 就表示一个 \ 字符。

还有别的根据环境不同有不同的意思:

\^

\$

\%

\/

等等……

-----------------------

是你没说清楚好不好……

Linux 下面, shell 的字符串中有一些东西,是不需要进行像 C 那样必须独立出字符串才能调用这个特殊部分的功能的。shell 依然会去解释字符串中的内容,从而方便字符串的一些处理。

比如:

jiangtao@ubuntu:~$ export name="Linux"

jiangtao@ubuntu:~$ echo "This is $name."

This is Linux.

jiangtao@ubuntu:~$

里面的 $name 依然会被当成变量处理。

同样:

jiangtao@ubuntu:~$ echo "This is `uname`."

This is Linux.

jiangtao@ubuntu:~$ uname

Linux

jiangtao@ubuntu:~$

shell 会去运行 ` ` 中的命令,这个是 Linux 下面 shell 的一个特性。而不是所有字符串中都必须无条件的纳入字符串的真实内容。

不过如果你真的想不转义,有个特别的方法:

jiangtao@ubuntu:~$ export name="Linux"

jiangtao@ubuntu:~$ echo 'This is `uname`.'

This is `uname`.

jiangtao@ubuntu:~$ echo 'This is $name.'

This is $name.

jiangtao@ubuntu:~$

也就是不用双引号,而改用单引号来包括起字符串。但是强烈不推荐,再看代码的时候,会看晕的。

这个特性在很多 Linux 的解释行语言里,都被使用,比如 PHP 就可以字符串内直接使用变量。

看来与我预测的相反,你太会用 C 了……

${@:3}只是一个提取子串的 *** 作 $@ 表示所有些参数都分别被双引号引住若脚本接收两参数$@等价于$1$2 ${@:3}表示第三个参数后面的所有参数(包括第三个参数)

理论不明,有个试一下的建议,不论成功与否,希望楼主反馈一下. 你符值时用用单引号试一下. command ="'参数1' '参数2' '参数3'"


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8364775.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存