我在Linux中使用bash脚本迁移数据库输出文件,我想知道如何在bash脚本中执行Linux命令时处理错误。
例如,通常情况下,当我想循环遍历目录中的文件时,我会这样写它
# list files and grep results for .sql extension
for FILE in `ls | grep ".sql"`
do
echo "found file: $FILE"
done
它工作得很好,因为grep如果有.sql扩展名或不返回任何内容,就会返回文件名。
我想知道如何使用返回结果或错误的Linux命令,例如
ls ./*.sql
,
我想在远程服务器上运行perl脚本,它应该通过ssh登录到linux服务器,并运行带参数的shell脚本,然后打印结果,请帮助......
我有一个小脚本,它将在远程主机上登录并执行ls命令,但我想运行一个bash脚本。
use Net::SSH::Perl;
my $host = "xxxxx";
my $usr = "xxx";
my $pwd = "xxx";
my $ssh = Net::SSH::Perl->new($host);
$ssh->login($usr,$pwd);
my($stdout, $stderr, $
正如标题所述,Jenkins可以正确地将目录切换到亚行,然后执行它。但是,当它超出亚行的目录时,它不能使用它。以下代码:
.//opt/android-sdk-linux//platform-tools/adb --help
下列产出的结果:
+ .//opt/android-sdk-linux//platform-tools/adb
/tmp/jenkins882020622874679741.sh: rad 18: .//opt/android-sdk-linux//platform-tools/adb: Filen eller katalogen finns inte
Build ste
这些是我的样本文件
user@linux:~$ ls -l | cut -d ' ' -f 10-
01. old Name.txt
02. old Name.txt
03. old Name.txt
test.txt
user@linux:~$
这就是我想做的。
user@linux:~$ for output in *'old Name'*; do echo $output; done
01. old Name.txt
02. old Name.txt
03. old Name.txt
user@linux:~$
因为实际的代码多次使用old Name
我在Oracle Linux上。
[root@ol76 systemd]# cat /etc/*release*
Oracle Linux Server release 7.6
NAME="Oracle Linux Server"
VERSION="7.6"
ID="ol"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Oracle Linux Server 7.6"
ANSI_COLOR=
我想将我的软件版本嵌入到我的代码中,然后使用类似命令的参数,如-v或--version,从程序二进制文件中检索它。例如,一些GNU/Linux软件二进制文件在命令行中提供-v或-V参数时会打印其版本信息,以ls为例:
$ ls --version
ls (GNU coreutils) 8.13
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free soft
我在执行C-shell命令方面有问题。我不知道应该使用哪个括号/或者我用错误的方式设置变量?如果你有空的话,请给我指点。
#!/bin/csh -f
if ( "$1" == "yes" ) then
ls -la
set path = `pwd | grep -c yes`
ls -la
endif
首先ls -la正常执行,但在设置变量之间后,第二个ls返回错误"ls:-la not found“。
我在这里错过了什么?
我有一个为旧版本linux构建的二进制文件,当我将二进制文件放到一个较新的linux中并试图运行它时,它会告诉我们“没有这样的文件或目录”错误。
我搜索了一下,发现这是关于不正确的图书馆链接。我在这个二进制文件上使用了ldd,所显示的输出如下:
./test.exe: /lib/libpthread.so.0: version 'GLIBC_2.1' not found (required by ./test.exe) ./test.exe: /lib/libpthread.so.0: version 'GLIBC_2.0' not found (require
我正在尝试用Linux写一个非常非常简单的脚本。
让我先给你看一下代码:
#!/bin/bash
# The shell program uses glob constructs and ls
# to list all entries in testfiles, that have 2
# or more dots "." in their name.
ls -l /path/to/file/*.*.*
当我使用bash myscript命令运行这段代码时,我得到的结果类似于:/path/to/file/FILEW.WIT.trie.dots
但我不想这样。我只想显示文件名
在linux中,我有一个名为file_list.txt,的文件列表,其中该列表中的路径还包括一个env变量(在本例中,该文件列表中列出的文件是$HOME/myfile).。
> cat file_list.txt
$HOME/myfile
> ls `cat file_list.txt`
ls: $HOME/myfile: No such file or directory
> ls $HOME/myfile
/home/user/myfile
为什么会这样呢?如何在文件列表中列出的文件上运行操作(如ls、less、vim等)?
man dpkg在没有给出filename-search-pattern的定义的情况下这么说。
-S, --search filename-search-pattern...
Search for a filename from installed packages.
例如,下面的输出令人困惑。为什么通过移除前导"/",查询字符串不必以结果字符串结尾。
谁能给出filename-search-pattern的定义,这样我才能确切地知道如何使用dpkg -S进行搜索?
$ dpkg -S /bin/ls
coreut
只是对命令"ls *“的输出感到困惑。我在Ubuntu11.10和RedhatEnterprise6.3中测试了下面的场景,得到了相同的结果。
Shell日志
$ uname -a
Linux 2.6.32-279.19.1.el6.x86_64 #1 SMP Sat Nov 24 14:35:28 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
$ echo $0
-bash
$ cd test
$ ls
$ ls * *<== at first, no file/directory under current
我使用以下脚本在特定路径中查找匹配的单词: for i in `ls |egrep -v 'dev|sys|mnt'`; do echo $(date); echo $i; egrep -rn "Word1|Word2|Word3" $i; done 它的代码是这样的: Sun Jul 4 14:23:04 UTC 2021
hs_err_100125.log 如何获取每个结果的完整路径?
我想创造一个科多瓦项目。当我从shell中尝试这个命令时,我遇到了一个问题:“”。返回错误消息是:
francesco@francesco:~/hello$ sudo cordova build
Running command: /home/francesco/hello/platforms/android/cordova/build
[Error: ANDROID_HOME is not set and "android" command not in your PATH. You must fulfill at least one of these conditions
遵循我的以前的职位,我仍然有一个恼人的bug不会离开。
我在Linux下为bash命令编写了一个模拟器。
当我使用以下命令在一次运行中运行我的代码时:
ls Debug/ | grep r
ls >> file.jer & ls & ls & ls &
ls >> file.jer
ls > file1.rrr
ls & ls | grep e
ls & ls & ls &
ls Debug/ | grep r
ls Debug/ > k.out
ls Debug/ >> k.out
我试图检查Linux服务器上的信息,如果它有某些名为“ocr”的磁盘。所以我运行了一个shell命令,并将输出捕获到一个文本文件中。然后,我将在file.But中搜索字符串,这是以下脚本所做的工作。
import os
myCmd = os.popen('ls /dev/asm|grep ocr').read()
print(myCmd)
with open('myCmd') as f:
if 'ocr' in f.read():
print("RAC server")
我想知道如何在c中输出stdout。下面是一个从linux输出命令'ls‘的stdout的示例,将其存储在一个变量中,然后打印该变量的值: import subprocess
#Piping stdout of the command 'ls' from linux
test = subprocess.Popen("ls", stdout = subprocess.PIPE)
stdoutpiped = test.stdout.read().decode('utf-8')
print(stdoutpiped) 运行代码的结果: Dest
我尝试连接字符串,然后执行结果字符串,但它不能正常工作,以下是代码:
#!/bin/bash
c="ls -alis"
c="$c | grep me"
echo $c
$c
它打印ls -alis | grep me,但没有打印任何包含字符串' me‘的文件,它给出了这个错误:
ls: |: No such file or directory
ls: grep: No such file or directory
ls: u1920477: No such file or directory
但是,如果我直接在终