我试图在bash脚本中从当前目录复制一些文件,但问题是cp命令不能与当前目录一起工作。我可以在回溯5(基于Ubuntu)上使用以下命令,但在Kali linux (基于Debian)中没有任何问题:
cp -f -v *.{html,txt,php} /var/www/
通过首先将目录更改为这些文件所在的目录,我可以直接从终端执行此命令。但是使用脚本我得到了以下错误:
cp -f -v *.{html,txt,php} /var/www/
cp: cannot stat `*.{html,txt,php}': No such file or directory
同样,当我使用Ubunt
目前,我正在进行一个使用Linux shell脚本的项目,我发现自己正在编写代码片段,如下所示:
#!/bin/sh
x=1
if [ $x -eq 1 ]; then
echo "Hello, Dave!"
fi
if command -v pip3 >/dev/null ; then
echo "PIP3 is already present."
fi
上面的感觉似乎很好,但它扰乱了我内心的和谐感。为什么第一条if语句只能在方括号内正常运行,而第二条语句只在不带方括号的情况下才能正常运行?这(很大程度上)是一个反问句;我有一个模糊
我在crontab中有下面一行。
@reboot /usr/bin/teamspeak3-server_linux-amd64/ts3server_minimal_runscript.sh
当我重新启动时,脚本在后台运行(即我的terminal 3服务器启动),但我试图找到如何阻止它(我不能只是ctrl+c终端,因为它现在正在后台运行)。一个论坛帖子说通过使用下面的命令来终止这个过程。
ps -ef | grep -i XXXX: to find your background running process
kill OID : kill your unnecessary process
我想要创建键是a:b or a@b的env参数--我需要从bash脚本或终端执行,它应该在linux或windows上工作。
当我尝试的时候,export a:b=c,我得到了一个错误
not a valid identifier
当我尝试export tempKey = a:b时,它起了作用,但后来我不知道如何使用值a:b作为键创建它
你能告诉我吗?
我一般都是Unix和Linux的新手,在if语句中无法进行逻辑比较。
我相信这是一个非常基本的错误,但我就是找不到错误。
if (7+3 == 10); then
echo "nice this works"
elif (7+3 == 73); then
echo "too bad string concatenation"
else
echo "I really don't understand shell"
fi
回声:我真的不懂贝壳。
用大括号包围shell脚本中所有行的原因是什么?
例如,此脚本的全部内容包含在括号中:
#!/bin/sh
{
set -e
LATEST="v0.3.5"
DGOSS_VER=$GOSS_VER
if [ -z "$GOSS_VER" ]; then
GOSS_VER=${GOSS_VER:-$LATEST}
DGOSS_VER='master'
fi
GOSS_DST=${GOSS_DST:-/usr/local/bin}
INSTALL_LOC="${GOSS_DST%/}/goss"
DGOSS_IN
紧随其后
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
如何在没有实际到达的情况下从不同的目录运行Linux命令?
在下面,我希望运行一个make命令,但不进入源代码目录,即从我的主目录:
me@mypc:~$ ~/my/source/code/directory/make #This is wrong!
我看到了一些例子,这些例子表明:
me@mypc:~$ cd ~/my/source/code/directory; make
但这最终使我进入了源代码目录,这是我想要避免的。
可能还有另一种选择:
me@mypc:~$ cd ~/my/source/code/directory; make; cd ~
但在塞塞这件事变得复杂起来了。
我想知道
在这两个for语句中,我都得到了以下错误:
./count_files.sh: line 21: [: too many arguments
./count_files.sh: line 16: [: too many arguments.
有人能帮我吗?
#!/bin/bash
files=($(find /usr/src/linux-headers-3.13.0-34/include/ -type f -name '[aeiou][a-z0-9]*.h'))
count=0
headerfiles=($(find /usr/src/linux-headers-3.
如何在linux中将参数传递给函数。我在文件中逐行记录,并在后台运行esch记录
while read -r record
do
reccount=$(( reccount + 1 ))
#function call
proceed_tasks_function(record) &
done
添加到函数
proceed_tasks_function(/*take the record from function call*/)
{
### parse input record
contact_email=
我正在编写一个简单的脚本来检查一些存储库的更新,如果需要,我将从这些更新中生成新的包来安装它所引用的那些程序的新版本(在Arch Linux中)。所以我在执行真正的脚本之前做了一些测试。
问题在于,我从这段代码中得到了错误[: excessive number of arguments (但我认为正确的翻译应该是[: too many arguments):
# Won't work despite the double quoted $r
if [ "$r" == *"irt"* ]; then
echo "TEST"
fi
代
请考虑以下几点:
$ cat a.sh
#!/bin/sh
echo in a.sh, BANANA=$BANANA
$ cat Makefile
.PHONY: foo
export BANANA = I am a banana
foo:
$(eval F=`./a.sh`) # BANANA is set in a.sh
echo $F
$(eval G=$(shell ./a.sh)) # BANANA is *not* set in a.sh
echo $G
$ make
# BANANA is set in a.s
我通常的外壳是bash,我通常的终端是xterm,在Debian上。
在最近发布bash之后,当我使用按钮-2将一些文本粘贴到bash命令行(通过单击和拖动按钮-1来选择)时,我在粘贴的文本中有新的行,也就是说,我必须从键盘上再给出一个新行来执行粘贴的文本。
在我看来,Debian在bash中新配置了一些东西,因为如果我使用另一个shell (例如,破折号),粘贴的行就会立即执行,就像在bash和我以前使用过的所有shell中一样。
是否有可能将bash行为恢复到旧的行为?
来自dpkg -l
ii bash 5.1-2 amd64 GNU B
我有一个如下的spec.txt,在linux shell中运行"cat spec.txt | cut -d "|“-f 2”命令是可以的。
user@test-server:~/auto/acpi6/main/spec$ cat spec.txt
a1 | BMC_HEALTH | 0x0 | discrete | 0x0000| na | na | na | na | na | na
user@test-server:~/auto/acpi6/main/spec$ cat s
我不明白${}在第四个和第六个提示符中做了什么,我也找不到任何关于这方面的文档,Python for Unix and Linux System Administrator一书中有一个类似第六个提示符中的例子,在这个例子中,变量不仅被放在$的前面,而且还被封装在{}中,以便将字符串嵌入到另一个变量中,如果我引用完整的表达式,它是有效的,但是4&6中发生了什么呢?
In [1]: test = 'TEST TEST TEST!!!'
我正在尝试在Linux Mint 15上编译Cyanogenmod,并收到以下错误。
host StaticLib: libmincrypt (/home/benji/Source/out/host/linux-x86/obj/STATIC_LIBRARIES/libmincrypt_intermediates/libmincrypt.a)
ERROR: prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/bin/x86_64-linux-ar only run on 64-bit linux
m
在尝试运行时,我有以下错误:
$ docker run my-app-11
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"java -jar /opt/my-app-1.0-SNAPSHOT.jar\": stat java -jar /opt/my-app-1.0-SNAPSHOT.jar: no such file or directory": u