我正在尝试创建一个简单的for循环,它将获取ls命令的所有输出并将每个输出放入变量中.到目前为止我有
for i in ls /home/svn
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误.
我试图理解为什么脚本可以使用#!/bin/bash但不是#!/bin/sh.我运行Cygwin和都sh.exe和bash.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) 我试图在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) mongodump -db somedb --collection somecollection --out - | gzip > dump.gz
Run Code Online (Sandbox Code Playgroud)
上图中的破折号是什么意思?我似乎与隧道有关。但是在查找 bash 参考之后,我仍然无法理解什么意思。
我正在编写一个 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)
请有人可以帮助我.....谢谢。
以下代码向我抛出异常并停止,即使预测到异常。代码通过 .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) 我创建了以下简单的测试脚本
#!/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)
我使用的是mac用fish,我应该为了成功地运行它呢?
我正在努力使用一个小的 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) 我想弄清楚如何在一个脚本中拥有多个函数并选择带有参数的函数。问题似乎是,如果我选择一个函数,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) 如何通过从文件名中删除“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)
如何使用awk、sed或类似工具从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