标签: script

在选择 while 循环时更新 sqlite 数据库

有一个 bash 脚本将对引用 sqlite 数据库的文件执行“一些魔法”\xe2\x84\xa2,并且在执行“一些魔法”\xe2\x84\xa2 后,应该更新数据库。这是简化的代码

\n\n
sqlite3 database.db "select NUMBER from table WHERE STATUS = \'N\'" | while read line; do\n    SELECTION=$(echo $line | awk -F\'|\' \'{ print $1 }\')\n    [some magic]\xe2\x84\xa2\n    sqlite3 database.db "update table SET STATUS=\'Y\' WHERE NUMBER=\'$SELECTION\'"\ndone\n
Run Code Online (Sandbox Code Playgroud)\n\n

一切正常,sqlite 数据库将被逐行读取,我可以对引用的文件执行“一些魔法”\xe2\x84\xa2,但我可以\xc2\xb4t 更新数据库中的行 - I\xc2\xb4ve出现错误:

\n\n
\n

错误:数据库已锁定

\n
\n\n

有人知道我如何在读取数据库时更新数据库吗?或者还有其他解决方案可以让我做到这一点吗?

\n

script bash sqlite bash-scripting

4
推荐指数
1
解决办法
1万
查看次数

在 Linux 或 Windows 上,如何找到该目录中唯一 mp3 的所有 mp3 的路径?

我有一个 Music 文件夹,内容如下:

音乐
    -艺术家A
        -歌曲1.mp3
        -专辑A
            -歌曲2.mp3
            -歌曲2.m4a
        -专辑B
            -歌曲1.mp3
            -歌曲2.mp3
            -歌曲3.mp3
        -专辑C
            -歌曲1.mp3
            -歌曲1.jpg
            -SomeFolder1
                -歌曲1.mp3
    -艺术家B
        -歌曲1.mp3
    -艺术家C
        -歌曲1.mp3
        -歌曲2.mp3
        -歌曲3.mp3
        -SomeFolder2
            -歌曲1.jpg
            -Song2.jpg
        -SomeFolder3


我正在寻找这样的输出:

艺术家A/歌曲1.mp3
艺术家A/AlbumA/Song2.mp3
艺术家A/专辑C/Song1.mp3
艺术家A/AlbumC/SomeFolder1/Song1.mp3
艺术家B/歌曲1.mp3



所以,我不想要只有一个文件的目录,我想要只有一个 mp3 的目录 - 无论子目录或其他文件如何。我也不想要空目录或包含多个 mp3 的目录。

我并不反对 Linux 上的 shell 脚本。但是,我不想在任何一个操作系统上编译程序。

我已经尝试过: find . -type d -exec sh -c 'set -- "$0"/*.mp3; [ $# -le 1 ]' {} \; -print

但这给了我这个输出:

。
./艺术家B
./艺术家A
./艺术家A/专辑A
./艺术家A/专辑C
./ArtistA/AlbumC/SomeFolder1
./ArtistC/SomeFolder2
./ArtistC/SomeFolder3

这很接近,但不完全是我想要的。有两个空文件夹,没有文件名。

windows linux mp3 script find

4
推荐指数
1
解决办法
4271
查看次数

如何使用 Curl 将所有文件从本地上传到主机?

我已经编写了一个 shell 脚本来上传从本地到主机的特定路径中具有不同名称的所有文件,但是我遇到了一些问题并且文件没有被上传

#!/bin/sh
for file in /main/folder1/path/*
do
curl -u Pass:"Uname" -T  $file http://www.example.com/folder/$file
done
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题。

我收到如下错误

<html>
<head>
<title> 500 Internal Server Error </title>
</head>
<body>
<h1> 
Internal Server Error 
</h1> 
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

目前我在里面有脚本/main/folder_2,如果我更改/main/folder_1/path/*为../folder_1/path/*,我会得到输出,文件会按预期移动。但我想使用指定的完整路径运行脚本。

unix script shell upload curl

4
推荐指数
1
解决办法
2万
查看次数

持续检查 OpenVPN 连接状态

我正在尝试检查并显示状态(已连接/未连接)和 OpenVPN 连接的服务器主机名/cn,该连接应该在每次启动时连接。

现在我发现在/var/log/syslog连接中已记录,我可以用它来确定是否Initialization Sequence Completed已记录并从[brimstone] Peer Connection Initiated with [AF_INET]1.2.3.4:1234.

获取此日志,我可能会检查Initialization Sequence Completed,这意味着我已连接和主机名,我只想要不同的脚本。

现在我的问题是我目前不知道连接是否仍然存在和/或我是否连接到另一台服务器。我可以定期检查日志的变化,但这对于一个相当基本的任务来说似乎有点极端。

我如何检查我的 OpenVPN 的连接状态,如果连接得到服务器主机名/cn?

linux vpn script openvpn

4
推荐指数
1
解决办法
2万
查看次数

检查文件夹中是否有空文件

我有一个脚本,每次从 FTP 服务器下载 17 个文件,但有时由于某些原因,某些文件的权重为“0”。

所以我正在寻找一个 bash 脚本来检查是否有大小为零的文件。

我怎么能这样做?

编辑:我想使用 if-else 语句:如果有任何 0 字节文件,我将不得不再次运行 bash 脚本。

script bash

4
推荐指数
1
解决办法
2706
查看次数

从 cygwin 运行 Windows 命令

我可以通过 cygwin 运行 Windows 命令,并将参数传递给它吗?

具体来说,我想要一个运行 Robocopy 的 bash 脚本,但问题很普遍。

Robocopy 比 rsync 更适合我的需求,但批处理脚本是反复无常的。PowerShell 看起来很有趣,但如果可能的话,我宁愿不学习一门新语言,而且 bash 非常方便。

我找不到任何关于它的提及。

谢谢

windows script cygwin batch-file bash-scripting

4
推荐指数
1
解决办法
8632
查看次数

使用 ADB 向手机发送事件触摸,但无法释放

我有一个运行 CM13 的 HTC 10 我试图通过 ADB 和发送事件向它发送触摸事件,发送后:

adb shell
sendevent /dev/input/event6 3 57 0
sendevent /dev/input/event6 3 53 300
sendevent /dev/input/event6 3 54 400
sendevent /dev/input/event6 3 48 5
sendevent /dev/input/event6 3 58 50
sendevent /dev/input/event6 0 2 0
sendevent /dev/input/event6 0 0 0
Run Code Online (Sandbox Code Playgroud)

我在手机上点击一下,打开 showtouches,我可以看到触摸已经开始,但触摸仍然在手机上处于活动状态。

根据我在这里和这里以及其他地方的阅读,似乎我应该做的就是:

sendevent /dev/input/event6 3 57 -1
sendevent /dev/input/event6 0 2 0
sendevent /dev/input/event6 0 0 0
Run Code Online (Sandbox Code Playgroud)

或者甚至只是

sendevent /dev/input/event6 3 57 -1
sendevent /dev/input/event6 0 0 0
Run Code Online (Sandbox Code Playgroud)

然而,这些命令都不会导致触摸在手机上结束。

我尝试将所有这些放在手机本身的 …

script android shell shell-script adb

4
推荐指数
1
解决办法
1万
查看次数

Powershell one-liner 使用 netstat 问题在与端口相同的行上显示进程

首先,我只想确保用户 Erik Bitemo 获得了我在这里使用的原始代码的信任。输出是我正在寻找的一个例外:其中一个端口消失并且“System System5”出现在它的位置,我无法弄清楚为什么会发生这种情况。

目标:在同一行上显示所有 TCP(侦听)和 UDP 端口以及与每个端口关联的进程。

正在使用的一种衬垫:

$nets = netstat -bano|select-string 'LISTENING|UDP'; foreach ($n in $nets)    {    $p = $n -replace ' +',' ';    $nar = $p.Split(' ');    $pname = $(Get-Process -id $nar[-1]).ProcessName;    $n -replace "$($nar[-1])","$($ppath) $($pname)";     }
Run Code Online (Sandbox Code Playgroud)

示例输出:

TCP 0.0.0.0:135 0.0.0.0:0 LISTENING svchost
TCP 0.0.0.0: System System5 0.0.0.0:0 LISTENING System
TCP 0.0.0.0:623 0.0.0.0:0 LISTENING LMS

它更改的端口是 445,但我不知道为什么当其余端口按预期工作时它只更改那个端口。为什么脚本将 445 更改为“System System5”?

不幸的是,无法使用其他工具,因此我只能使用内置的 Windows 工具。

script powershell netstat

4
推荐指数
2
解决办法
2万
查看次数

如何检查变量的最后三个字符是否与另一个变量匹配?

我有%var1%和%var2%

var1="UserInput"
var2=file.log
Run Code Online (Sandbox Code Playgroud)

如果用户键入%var1%“file.txt”,我如何(如果可能)仅检查最后三个字符(或文件格式,如果可能)以查看它是否与%var2%的最后三个字符或文件格式匹配?

另一种做同样事情的方法也是受欢迎的(但用户输入变量必须在那里)

windows-7 script batch command-line environment-variables

4
推荐指数
2
解决办法
2402
查看次数

在 PowerShell 中通过多种搜索模式搜索文件

我得到了这个管道命令:

Get-Childitem -Path E:\Shares\ -Recurse -Filter *Synformulas* | Export-csv -Path E:\result.csv
Run Code Online (Sandbox Code Playgroud)

现在就是这样,我需要搜索多个搜索词。我不能简单地将它们附加到 -Filter 标志中。

谁能告诉我如何在文件夹中递归搜索具有多个搜索词的文件名?

windows script powershell

4
推荐指数
1
解决办法
6280
查看次数