Loading...
Loading...
Compare original and translation side by side
mpmpmp user retrievemp token balance list --wallet <name> --chain <chain>mpwhich mpjqwhich jqmp user retrievemp token balance list --wallet <name> --chain <chain>mpwhich mpjqwhich jq~/.config/moonpay/scripts/~/.config/moonpay/logs/trading.log#!/bin/bash
set -euo pipefail
MP="$(which mp)" # absolute path for cron/launchd
LOG="$HOME/.config/moonpay/logs/trading.log"
mkdir -p "$(dirname "$LOG")"
log() { echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] $*" >> "$LOG"; }~/.config/moonpay/scripts/~/.config/moonpay/logs/trading.log#!/bin/bash
set -euo pipefail
MP="$(which mp)" # absolute path for cron/launchd
LOG="$HOME/.config/moonpay/logs/trading.log"
mkdir -p "$(dirname "$LOG")"
log() { echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] $*" >> "$LOG"; }
Key points:
- `mp -f compact` outputs single-line JSON, ideal for `jq` parsing
- Use `$(which mp)` and store as `MP` — cron/launchd have minimal PATH
- Wallet names only in scripts — `mp` handles keychain decryption at runtime
- If the user gives token names/symbols, resolve to addresses first with `mp token search`
关键要点:
- `mp -f compact`输出单行JSON,非常适合`jq`解析
- 使用`$(which mp)`并将其存储为`MP`变量——cron/launchd的PATH环境变量非常有限
- 脚本中仅包含钱包名称——`mp`会在运行时通过钥匙串处理解密
- 如果用户提供的是代币名称/符号,请先使用`mp token search`解析为地址~/.config/moonpay/scripts/dca-sol.sh~/.config/moonpay/scripts/dca-sol.shundefinedundefined
Add with: `(crontab -l 2>/dev/null; echo '0 9 * * * ~/.config/moonpay/scripts/dca-sol.sh # moonpay:dca-sol') | crontab -`
Common intervals:
- Every hour: `0 * * * *`
- Every 4 hours: `0 */4 * * *`
- Daily at 9am: `0 9 * * *`
- Weekly Monday 9am: `0 9 * * 1`
添加方式:`(crontab -l 2>/dev/null; echo '0 9 * * * ~/.config/moonpay/scripts/dca-sol.sh # moonpay:dca-sol') | crontab -`
常见时间间隔:
- 每小时:`0 * * * *`
- 每4小时:`0 */4 * * *`
- 每天上午9点:`0 9 * * *`
- 每周一上午9点:`0 9 * * 1`~/Library/LaunchAgents/com.moonpay.dca-sol.plist<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.moonpay.dca-sol</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/USERNAME/.config/moonpay/scripts/dca-sol.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardErrorPath</key>
<string>/Users/USERNAME/.config/moonpay/logs/dca-sol.err</string>
</dict>
</plist>launchctl load ~/Library/LaunchAgents/com.moonpay.dca-sol.plist~/Users/USERNAME/...echo $HOME~/Library/LaunchAgents/com.moonpay.dca-sol.plist<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.moonpay.dca-sol</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/USERNAME/.config/moonpay/scripts/dca-sol.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardErrorPath</key>
<string>/Users/USERNAME/.config/moonpay/logs/dca-sol.err</string>
</dict>
</plist>launchctl load ~/Library/LaunchAgents/com.moonpay.dca-sol.plist~/Users/USERNAME/...echo $HOME~/.config/moonpay/scripts/limit-buy-sol.sh~/.config/moonpay/scripts/limit-buy-sol.sh#!/bin/bash
set -euo pipefail
MP="$(which mp)"
LOG="$HOME/.config/moonpay/logs/trading.log"
mkdir -p "$(dirname "$LOG")"
log() { echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] $*" >> "$LOG"; }#!/bin/bash
set -euo pipefail
MP="$(which mp)"
LOG="$HOME/.config/moonpay/logs/trading.log"
mkdir -p "$(dirname "$LOG")"
log() { echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] $*" >> "$LOG"; }
Schedule every 5 minutes:
- Cron: `*/5 * * * * ~/.config/moonpay/scripts/limit-buy-sol.sh # moonpay:limit-buy-sol`
- Launchd: use `<key>StartInterval</key><integer>300</integer>` instead of `StartCalendarInterval`
设置为每5分钟调度一次:
- Cron:`*/5 * * * * ~/.config/moonpay/scripts/limit-buy-sol.sh # moonpay:limit-buy-sol`
- Launchd:使用`<key>StartInterval</key><integer>300</integer>`替代`StartCalendarInterval`undefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedtail -50 ~/.config/moonpay/logs/trading.logtail -50 ~/.config/moonpay/logs/trading.loglaunchctl unload ~/Library/LaunchAgents/com.moonpay.dca-sol.plist # pause
launchctl load ~/Library/LaunchAgents/com.moonpay.dca-sol.plist # resumelaunchctl unload ~/Library/LaunchAgents/com.moonpay.dca-sol.plist # 暂停
launchctl load ~/Library/LaunchAgents/com.moonpay.dca-sol.plist # 恢复if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS: use launchd (fires even if machine was asleep)
else
# Linux: use crontab
fiif [[ "$OSTYPE" == "darwin"* ]]; then
# macOS: use launchd (fires even if machine was asleep)
else
# Linux: use crontab
fitail -20 ~/.config/moonpay/logs/trading.logmpmp token retrievebc -lbcawk "BEGIN {exit !($PRICE < $TARGET)}"# moonpay:{name}tail -20 ~/.config/moonpay/logs/trading.logmpmp token retrievebc -lbcawk "BEGIN {exit !($PRICE < $TARGET)}"# moonpay:{name}