Linux上的Bash4.3 shell:
我意识到Bash是无类型的,或者有一种很弱的类型。但是,Bash能否被调用(例如,使用某些选项),以便在滥用声明的整数变量(例如试图将字符串存储到该整数变量)时,shell将抛出一个运行时错误?
示例代码:
declare -i age
age=23
echo "$age" # result is 23
age="hello"
echo "$age" # result is not the string hello - wish I could get an error message her
我用linux bash编写了一个简单的脚本,就像下面这样:
#!/bin/bash
PATH=/tmp_with_zip_files
FILETYPE=zip
i=1
for filename in $PATH/*.$FILETYPE;
do
echo "rm $filename";
if [ -f $filename ];
then rm $filename;
fi
i=$((i+1))
done
echo "$i files removed"
但是,当
echo $var命令可以很容易地调用bash中变量的值,如下所示
user@linux:~$ a=1; b=2; c=a+b
user@linux:~$ echo $a $b $c
1 2 a+b
user@linux:~$
我想要实现的是用x中的实际值替换a,b,c
user@linux:~$ a=1; b=2; c=a+b
user@linux:~$ for i in a b c; do echo "$i = x"; done
a = x
b = x
c = x
user@linux:~$
通过使用类似的for循环,我希望能得到这样的输出
a = 1
b = 2
c
在bash中,我尝试将PPID导出为环境变量。但是,在我看来,结果在不同的Linux发行版中是非常不一致的。
在Ubuntu18.04上,下面的大多数命令都是“按预期”工作的。在NixOS上,我得到以下行为:
# normally PPID is not part of the environment
env | grep PPID
# --> no output
# exporting for a single command does not work
PPID=foo some-command
# --> bash: PPID: readonly variable
# e
紧随其后
https://stackoverflow.com/questions/1809899/how-can-i-assign-the-output-of-a-function-to-a-variable-using-bash和如何将命令的输出分配给变量?
我写
function getos(){
# http://stackoverflow.com/a/27776822/1637673
case "$(uname -s)" in
Darwin)
OS='mac'
;;
Linu
我已经写了一个脚本,它将在AmazonLinux2.0上默默地安装Microstrategy
在我的主脚本中,我调用Microstrategy安装脚本,它在/bin/ksh中,我的在/bin/bash中。
mstr_install.sh如下:
#!/bin/bash
#DATE 22-FEB-2019
#DISCRIPTION: IT will Install MSTR-11.1 with Silent Options using optins.txt file
DATE=$(date +"%Y-%m-%d_%T")
PATH="/app/soft/Installati
Bash if条件在比较特定字符串时不匹配
匹配字符串:
Red Hat Enterprise Linux Server release 7.2 (Maipo)
代码:
machineOSVersion="Red Hat Enterprise Linux Server release 7.2 (Maipo)"
modifiedOSVersion="CentOS Linux release 7 OR Red Hat Enterprise Linux Server release 7.2 (Maipo)"
if [[ ${machineOSVersion} =
我正试图在我的.zshrc中进行操作系统检查。在Ubuntu上运行时,我无法获得与Ubuntu的字符串比较的正确匹配。
片段:
function get_linux_distro()
{
echo `awk -F= '/^NAME/{print $2}' /etc/os-release`
}
function is_os_ubuntu()
{
set -x
local dist=`get_linux_distro`
if [[ ${dist} = "Ubuntu"* ]]; then # <<< string
我使用bash_completion来点击选项卡,查看分支名称和目录。这一切都很有效。我把它放在我的bash_profile中,以便连接bash_completion:
if [ -f `brew --prefix`/etc/bash_completion ]; then
. `brew --prefix`/etc/bash_completion
fi
当我现在开始我的终端时,我得到:
-bash: @MyNameHERE: command not found
如果我从bash_profile中删除第一个片段,它就会消失,但是bash_completion无法工作。有什么想法吗?
酿造
我正在尝试为Linux/Unix类编写一个简单的bash脚本,并且一直会出现语法错误。就连我的教授一眼也看不出来。
任何洞察力都将不胜感激!
pattersoncode:~ austen$ ./bash2
./bash2: line 3: if[ =0 ]: command not found
./bash2: line 4: syntax error near unexpected token `then'
./bash2: line 4: `then'
pattersoncode:~ austen$
致以敬意,
a=6
test $a -eq 6 > b
if[ &
我正在尝试运行一些bash脚本,这些脚本是我们在上在Linux上编写的。脚本执行一个
#!/bin/bash
sudo su -l <username> << EOF
echo $HOME
#execute command that is only on the path of <username>
EOF
不,我以user1的身份运行脚本,在脚本中我试图切换到user2。实际上,我需要它像这样运行,因为还有其他部分需要以user1的形式运行。
在linux上我得到
/home/user2
在上我得到
/Users/user1
因此,它实际上并不执行登录,