我在Linux和solaris下运行相同的脚本。下面是脚本:
#!/bin/sh
index=0
ls /tmp | grep e |
while read fileWithE
do
echo $fileWithE
index=`expr $index + 1`
done
echo "index is $index"
由于while循环在子while中运行,所以在solaris和linux中,我期望'index is 0‘作为输出。但是在solaris中,$index是/tmp下包含'e‘的文件的实际数量。那么,虽然循环不会在solaris下的
相同的命令:echo 1 > filename创建不同的文件名:
$ sh -c 'echo $LANG >=с=.sh' && ls *.sh | od -c
0000000 = 321 = . s h \n
0000007
和
$ bash -c 'echo $LANG >=с=.bash' && ls *.bash | od -c
0000000 = 321 201 = . b a s h \n
0000012
其中с是U+0441字符- 。很明显,sh吃
我遇到了这个问题,我很困惑。
我在bash中使用$RANDOM作为linux启动过程的一个测试字符串。非常有趣的是,我观察到每次启动linux时$RANDOM都是一样的。在我的例子中,是18869。
我只是将$RANDOM回显到一个文件中。我在每次启动时都观察到相同的数字。在此之后,$RANDOM似乎会返回“真实”随机数。
echo "$RANDOM is a test string" >> /tmp/test
有人能解释一下其中的原因吗?
现在,我已经知道这意味着有一个bug,但我找不到它。你能帮我检查一下我的代码,找出哪里出了问题吗?错误消息与我创建的日期函数有关。所有其他函数在这段代码中都工作得很好。
错误:
sguthrie1@cs:~$ ./finalproject.sh -d
Segmentation fault (core dumped)
代码:
function check
{
echo "usage: hw14.sh option argument
Please enter one or more options or arguments."
exit
}
fun
我有一个shell脚本,为我创建了一个具有完整结构、git存储库等的项目.问题是,在执行测试之后,我无法使用终端。下面是我的脚本示例:
read -p "Have you created the remote repository : $repo.git ? [y/n] " ok
if [ $ok != "y" ]; then
echo "You must create the remote repository before."
exit 0;
fi
git init
# Rest of the script...
当我输入&
给定下列人为代码:
#!/usr/bin/env bash
set -Eeuo pipefail
shopt -s inherit_errexit
echo 'before'
mapfile -t tuples < <(exit 1)
# ^ what option do I need to enable so the error exit code from this is not ignored
echo 'after'
它产生:
before
after
是否有一个set或shopt选项可以打开,以便<(exit 1)将导致调用方继
我想在一个循环中创建bash别名,在这个循环中,循环正在从命令读取行。为了逐行读取输出,我认为需要将输出通过管道传输到read。但是,当我这样做时,别名就不存在了。
如果我在.bashrc中包含以下内容
for x in a1 a2; do
eval "alias $x='echo foo'"
done
echo -e "a3\na4" | while read x; do
eval "alias $x='echo foo'"
done
别名a1和a2存在,但a3和a4不存在。这两个循环之间的区别
因为bash不支持“数组中的数组”,所以我在调用数组时尝试动态化变量名。
bash版本: 4.2
我使用了以下扩展方法:
#!/bin/bash
# data are pre-defined and type is determined later
declare -a data_male
declare -a data_female
data_male=(value1 value2)
data_female=(value3 value4)
type="male"
for value in ${${!data_$type}[@]};do
echo $value
d
我在一台机器上做了一个脚本,上面有这个命令
printf -v $1 %s $2
它在我使用的服务器上工作得很好。但是当我将脚本复制到另一台服务器时,我得到了这个错误。这里我漏掉了什么?
编辑:代码对我的脚本所做的是,它声明了变量,但没有在函数上进行本地化。下面是完整的函数
#Declare each property=value as regular bash variable=value
function getProperty {
for x in $(echo ${1} | tr ":" "\n")
do
set -- $
我想写一个简短的脚本,结构如下:
find the right folders
cd into them
replace an item
所以我的问题是,我从find获得了正确的文件夹,但我不知道如何对find给我的每一行执行操作。我尝试了使用for循环,如下所示:
for item in $(find command)
do magic for item
done
但问题是,这个命令将打印相对路径名,如果我的路径中有空格,它将在这一点上分割路径。
我希望你能理解我的问题,并给我一个提示。
我正在使用python,我有这样的数据:
RedHat Enterprise Linux ES 2.1 IA64
RedHat Enterprise Linux ES 2.1
Red Hat Enterprise Linux AS 2.1
Linux kernel 2.6.9
Linux kernel 2.6.8 rc3
Linux kernel 2.6.8 rc1
+ Ubuntu Ubuntu Linux 4.1 ppc
+ Ubuntu Ubuntu Linux 4.1 ia64
Linux kernel 2.6.8
我想把这个信息存储在一个json file.but
嗨,我一直在努力寻找解决这个问题的方法,但我找不到。我需要安装模块'IO::EventMux',所以我使用:
cpan[1]> install IO::EventMux
然而,我得到了以下错误:
Catching error: "CPAN::Exception::yaml_process_error=HASH(0xe34ed78)" at /usr/local/share/perl/5.14.2/CPAN.pm line 392
CPAN::shell() called at /usr/local/share/perl/5.14.2/App/Cpa