标签: sh

ls有条件的linux脚本for循环

我正在尝试创建一个简单的for循环,它将获取ls命令的所有输出并将每个输出放入变量中.到目前为止我有

for i in ls /home/svn
do
    echo $i
done
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误.

linux ls sh

0
推荐指数
1
解决办法
8301
查看次数

为什么脚本适用于/ bin/bash而不是/ bin/sh?

我试图理解为什么脚本可以使用#!/bin/bash但不是#!/bin/sh.我运行Cygwin和都sh.exebash.exe似乎是相同的(相同的文件大小).

$ cat 1.sh
#!/bin/sh
while read line; do
  echo ${line:0:9}
done < <(help | head -5)

$ ./1.sh
./1.sh: line 4: syntax error near unexpected token `<'
./1.sh: line 4: `done < <(help | head -5)'

$ cat 2.sh
#!/bin/bash
while read line; do
  echo ${line:0:9}
done < <(help | head -5)

$ ./2.sh
GNU bash,
These she
Type `hel
Use `info
Use `man
Run Code Online (Sandbox Code Playgroud)

bash shell sh

0
推荐指数
1
解决办法
2780
查看次数

在makefile中的条件中使用shell命令的结果

我试图在makefile中的条件中执行命令.

我让它在shell中工作:

if [ -z "$(ls -A mydir)" ]; then \
  echo "empty dir"; \
else \
  echo "non-empty dir"; \
fi
Run Code Online (Sandbox Code Playgroud)

但是如果我在makefile中尝试它,那么"$(ls -A mydir)"无论是否asdf为空都会扩展为空:

all:
    if [ -z "$(ls -A mydir)" ]; then \
      echo "empty dir"; \
    else \
      echo "non-empty dir"; \
    fi
Run Code Online (Sandbox Code Playgroud)

ls命令没有像我期望的那样扩展:

$ mkdir mydir
$ make
if [ -z "" ]; then \
      echo "empty dir"; \
    else \
      echo "non-empty dir"; \
    fi
empty dir
$ touch …
Run Code Online (Sandbox Code Playgroud)

shell makefile sh

0
推荐指数
1
解决办法
1315
查看次数

破折号是什么意思?

mongodump -db somedb --collection somecollection --out - | gzip > dump.gz
Run Code Online (Sandbox Code Playgroud)

上图中的破折号是什么意思?我似乎与隧道有关。但是在查找 bash 参考之后,我仍然无法理解什么意思。

bash sh

0
推荐指数
1
解决办法
331
查看次数

想要从 shell 脚本中传递密码以用于将文件从一台服务器传输到另一台服务器的 scp 命令

我正在编写一个 shell 脚本,它使用 scp 命令将文件从一台服务器复制到另一台服务器。但是每次由于 scp 命令而在命令行中运行脚本时,它都会要求输入密码。我不想从命令行传递密码,因为它们在脚本中大约有 36 个 scp 命令,用于从这么多服务器传输文件。所以我想要一种合适的方式来只从我的 shell 脚本传递密码。有人可以帮我通过脚本传递 scp 命令的密码......谢谢......

下面是我在我的 shell 脚本中使用的 scp 命令----`

scp -r root@$source_host:/$source_path root@$destination_host:/$destination_path
Run Code Online (Sandbox Code Playgroud)

请有人可以帮助我.....谢谢。

python unix linux shell sh

0
推荐指数
1
解决办法
5751
查看次数

NameError:未定义名称“ConnectionRefusedError”

以下代码向我抛出异常并停止,即使预测到异常。代码通过 .sh 启动,它还会打印有关代码执行的日志信息。

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

# Imports
import socket
from threading import Thread
import struct
import RPi.GPIO as GPIO
import os
import sys
from time import sleep

# Main Loop

    while True:

    try:

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((TCP_IP, TCP_PORT))
        s.settimeout(5)

        while True:

            try:

                # Data Sent 
                MESSAGE = str(""+ gpws_test() +""+ gpws_inhi() +"\r\n")

                s.send(MESSAGE.encode(encoding='utf_8'))
                data = s.recv(BUFFER_SIZE)

                # If Recieved Data
                if data == b'': break

                # Translate Byte
                data = data.decode('utf-8')
                data = data.split(',') …
Run Code Online (Sandbox Code Playgroud)

python sockets sh

0
推荐指数
1
解决办法
3943
查看次数

无法在mac上执行bash脚本

我创建了以下简单的测试脚本

#!/bin/bash

echo "test"
Run Code Online (Sandbox Code Playgroud)

chmod +x ./msa.sh用来执行它.

现在,当我尝试运行它时, ./msa 我得到以下错误,

Failed to execute process ‘./msa.sh'. Reason:
exec: Exec format error
The file './msa.sh' is marked as an executable but could not be run by the operating system.
Run Code Online (Sandbox Code Playgroud)

我使用的是macfish,我应该为了成功地运行它呢?

macos bash shell sh fish

0
推荐指数
1
解决办法
158
查看次数

curl 命令在 shell 脚本中不起作用,但在站点上运行良好

我正在努力使用一个小的 bash shell 脚本,该脚本应该列出我的 csv 文件并使用 curl 将它们上传到外部服务。当我将我的命令变量回显到控制台并执行它时,我工作正常,但是当我在我的脚本中执行它时,它会抱怨额外的 qouta “

我的脚本看起来像这样

#!/usr/bin/bash
LOGDIR="/var/log/tyk/"
FILE_EXSTENSION_NAME="*.csv"
CURLCMD="curl -k -i -H"
PORT="9992"
ENDPOINT="/endpoint"
URL="https://localhost"



for i in `ls $LOGDIR$FILE_EXSTENSION_NAME`; do
    filename=`echo $i | awk -F "/" ' { print $5 }'`
    echo $filename
    CMD="$CURLCMD \"filename: $filename\" -F \"data=@$LOGDIR$filename\" $URL:$PORT$ENDPOINT"
    $CMD
done
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到以下输出

% Total    % Received % Xferd  Average Speed   Time    Time     Time     Current
                             Dload  Upload   Total   Spent    Left  Speed
 0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--0curl: (6) Could …
Run Code Online (Sandbox Code Playgroud)

bash shell curl sh

0
推荐指数
1
解决办法
3820
查看次数

使用 bash 使用 getopts 调用不同的函数

我想弄清楚如何在一个脚本中拥有多个函数并选择带有参数的函数。问题似乎是,如果我选择一个函数,optarg 似乎不会与脚本一起运行。在这个例子中,我会这样运行脚本 ~# ./script.sh -a -c wordlist.txt 只运行第一个函数,选择的 wordlist 与 ~# ./script.sh -b -c wordlist 相同。文本

#!/bin/bash

one()
{
for i in $(cat $wordlist); do
  wget http://10.10.10.10/$i
}

two()
{
for i in (cat $wordlist); do
  curl http://10.10.10.10/$i
}

while getopts "abc:" option; do
 case "${option}" in
    c) wordlist=${OPTARG} ;;
    a) one;;
    b) two;;
  esac
done
Run Code Online (Sandbox Code Playgroud)

bash sh getopts

0
推荐指数
1
解决办法
181
查看次数

仅重命名唯一文件

如何通过从文件名中删除“1”并保留重复名称文件来仅重命名唯一文件?

输入:

-english_1.pdf  
-english_2.pdf  
-english_3.pdf  
-mathematics_1.pdf  
-theology_1.pdf  
-economics_1.pdf  
-economics_2.pdf
Run Code Online (Sandbox Code Playgroud)

如何使用或类似工具从math_1.pdf 和theology_1.pdf 中删除1

所需的输出

-english_1.pdf  
-english_2.pdf  
-english_3.pdf  
-mathematics.pdf  
-theology.pdf  
-economics_1.pdf  
-economics_2.pdf
Run Code Online (Sandbox Code Playgroud)

我试过:

rename -n  's/1//' *.pdf
Run Code Online (Sandbox Code Playgroud)

但它会删除所有1

shell rename sh

0
推荐指数
1
解决办法
66
查看次数

标签 统计

sh ×10

shell ×6

bash ×5

linux ×2

python ×2

curl ×1

fish ×1

getopts ×1

ls ×1

macos ×1

makefile ×1

rename ×1

sockets ×1

unix ×1