标签: bash

如何从Bash脚本中检测操作系统?

我想保留我.bashrc.bash_login文件的版本控制,以便我可以在我使用的所有计算机之间使用它们.问题是,我有一些特定于操作系统的别名,所以我一直在寻找一种方式来确定脚本在Mac OS X,Linux或运行Cygwin的.

Bash脚本中检测操作系统的正确方法是什么?

bash os-detection

463
推荐指数
18
解决办法
26万
查看次数

比较Bash中的数字

我开始学习为bash终端编写脚本,但我无法弄清楚如何让比较正常工作.我正在使用的脚本是:

echo "enter two numbers";
read a b;

echo "a=$a";
echo "b=$b";

if [ $a \> $b ];
then 
    echo "a is greater than b";
else
    echo "b is greater than a";
fi;
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它比较了第一个数字的数字,即9大于10000,但1大于09

如何将数字转换为类型以进行真正的比较?

bash shell numeric

462
推荐指数
8
解决办法
79万
查看次数

为什么需要在脚本文件的开头加上#!/ bin/bash?

之前我已经制作了Bash脚本,并且在开始时它们都运行正常.把它放进去有什么意义?会有什么不同吗?

另外,你怎么发音#?我知道那个!发音是"爆炸".

怎么#!发音?

linux bash scripting shebang

459
推荐指数
7
解决办法
58万
查看次数

ls命令:如何获得递归的完整路径列表,每个文件一行?

我如何让ls吐出一个递归的每行路径的平面列表?

例如,我只想要一个包含完整路径的文件列表:

/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow
/home/dreftymac/stackoverflow/alpha.txt
/home/dreftymac/stackoverflow/bravo.txt
/home/dreftymac/stackoverflow/charlie.txt
Run Code Online (Sandbox Code Playgroud)

ls -a1 几乎做我需要的,但我不想要路径碎片,我想要完整的路径.

bash command-line ls find

455
推荐指数
19
解决办法
56万
查看次数

如何重命名一批文件的扩展名?

在一个目录中,我有一堆*.html文件.

我想把它们重命名为 *.txt

我使用bash shell.

bash rename file-rename

451
推荐指数
14
解决办法
31万
查看次数

如何从Bash函数返回字符串值

我想从Bash函数返回一个字符串.

我将在java中编写示例以显示我想要做的事情:

public String getSomeString() {
  return "tadaa";
}

String variable = getSomeString();
Run Code Online (Sandbox Code Playgroud)

以下示例适用于bash,但有更好的方法吗?

function getSomeString {
   echo "tadaa"
}

VARIABLE=$(getSomeString)
Run Code Online (Sandbox Code Playgroud)

string bash function return-value

438
推荐指数
10
解决办法
31万
查看次数

从Bash中的字符串中删除固定的前缀/后缀

在我的bash脚本中,我有一个字符串及其前缀/后缀.我需要从原始字符串中删除前缀/后缀.

例如,假设我有以下值:

string="hello-world"
prefix="hell"
suffix="ld"
Run Code Online (Sandbox Code Playgroud)

我如何得到以下结果?

result="o-wor"
Run Code Online (Sandbox Code Playgroud)

bash

437
推荐指数
9
解决办法
34万
查看次数

430
推荐指数
14
解决办法
159万
查看次数

如何编写一个带有可选输入参数的bash脚本?

我希望我的脚本能够获取可选输入,

例如,目前我的剧本是

#!/bin/bash
somecommand foo
Run Code Online (Sandbox Code Playgroud)

但我想说:

#!/bin/bash
somecommand  [ if $1 exists, $1, else, foo ]
Run Code Online (Sandbox Code Playgroud)

bash arguments parameter-passing

425
推荐指数
8
解决办法
22万
查看次数

从密钥/对值文件中设置环境变量

TL; DR:如何将一组键/值对从文本文件导出到shell环境中?


为了记录,下面是问题的原始版本,带有示例.

我正在用bash编写一个脚本,用于解析某个文件夹中包含3个变量的文件,这是其中之一:

MINIENTREGA_FECHALIMITE="2011-03-31"
MINIENTREGA_FICHEROS="informe.txt programa.c"
MINIENTREGA_DESTINO="./destino/entrega-prac1"
Run Code Online (Sandbox Code Playgroud)

该文件存储在./conf/prac1中

我的脚本minientrega.sh然后使用以下代码解析文件:

cat ./conf/$1 | while read line; do
    export $line
done
Run Code Online (Sandbox Code Playgroud)

但是当我minientrega.sh prac1在命令行中执行时,它不会设置环境变量

我也试过使用,source ./conf/$1但同样的问题仍然适用

也许有其他方法可以做到这一点,我只需要使用我传递的文件的环境变量作为我的脚本的参数.

variables bash environment-variables

425
推荐指数
28
解决办法
31万
查看次数