相关疑难解决方法(0)

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

145
推荐指数
4
解决办法
5万
查看次数

在 Linux 中通过终端将 * 作为参数传递时使用“*”作为字符

我正在制作一个基本计算器来熟悉传递参数。我编码的函数是:

int op(char* sig, int num1, int num2)
{
    char sign=*sig;
    if(sign == '+') return num1+num2;
    if(sign == '/') return num1/num2;
    if(sign == '-') return num1-num2;
    if(sign == '*') return num1*num2;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的主要函数获取数字和符号并调用“op”函数。

int main(int argc, char *argv[])
{
    int num1=atoi(argv[1]);
    int num2=atoi(argv[3]);
    char* sig=argv[2];
    int res=op(sig,num1,num2);
    printf("%d\n",res);
}
Run Code Online (Sandbox Code Playgroud)

问题是当我使用“./”命令通过终端调用程序时,它不会将该*符号视为字符。相反,当我*在参数中使用时,该参数就变成了pipewriter.c我编码的文件的名称。例如,./pw.exe 3 + 4打印7./pw.exe 3 * 4只打印 0。

如何将*符号用作字符'*'

c shell

3
推荐指数
1
解决办法
85
查看次数

在 Bash 中,为什么 VAR="*" 在回显时会给出该目录中的文件列表?


我一直致力于在 Bash 脚本中以编程方式设置 cron 作业。
在其中我有这样一行:

JOB="00 12 * * * sh dosomething.sh"

我注意到如果我回应了 var $JOB,它包含目录的文件吗?

有没有办法将 * 符号作为普通字符存储在 var 中?

谢谢,

bash crontab

2
推荐指数
1
解决办法
54
查看次数

为什么bash文档建议引用通配符?

在几个手册(包括官方GNU/Linux命令行工具tldp.org)中,建议使用单引号(或双引号)来避免bash解释通配符或正则表达式符号,如插入符号(^)和美元($).

但在一些例子中,没有必要使用单/双引号.例如:

(1)

$ touch 'fo*'
Run Code Online (Sandbox Code Playgroud)

$ touch fo*
Run Code Online (Sandbox Code Playgroud)

fo*在两个命令行窗体中创建相同的文件.

(2)

$ grep '^foo' file.txt
Run Code Online (Sandbox Code Playgroud)

$ grep ^foo file.txt
Run Code Online (Sandbox Code Playgroud)

foo在file.txt行的开头搜索一个字符串.

为什么手册建议使用单/双引号来避免bash解释,如果bash实际上不首先解释一些通配符和正则表达式符号?

linux bash wildcard

1
推荐指数
1
解决办法
398
查看次数

标签 统计

bash ×3

linux ×2

shell ×2

c ×1

crontab ×1

quotes ×1

unix ×1

wildcard ×1